From aefb4800c81a1f8491e59c26487e7e1a645fc9ae Mon Sep 17 00:00:00 2001 From: Marko Ferme Date: Wed, 19 Oct 2022 00:01:34 +0200 Subject: [PATCH] db connection and oss file count --- .gitignore | 3 + swagger_server/controllers/oss_controller.py | 13 +-- swagger_server/requets_db/models/vrsta.py | 2 +- swagger_server/swagger/swagger.yaml | 48 +++++----- swagger_server/utils/db_utils.py | 98 +++++++++++++++----- 5 files changed, 112 insertions(+), 52 deletions(-) diff --git a/.gitignore b/.gitignore index 452acc5..ad0e075 100644 --- a/.gitignore +++ b/.gitignore @@ -3,6 +3,9 @@ __pycache__/ *.py[cod] *$py.class +#sublime config +sftp-config.json + # C extensions *.so diff --git a/swagger_server/controllers/oss_controller.py b/swagger_server/controllers/oss_controller.py index c95e49e..35043ca 100644 --- a/swagger_server/controllers/oss_controller.py +++ b/swagger_server/controllers/oss_controller.py @@ -1,4 +1,4 @@ -from swagger_server import db_utils +from swagger_server.utils import db_utils from swagger_server import util from flask import send_file @@ -27,7 +27,7 @@ def get_conllus(leta, vrste, kljucnebesede, cerifpodrocja): # noqa: E501 return ' '.join(files), 200 -def get_extracted_words(leta, vrste, kljucnebesede, cerifpodrocja): # noqa: E501 +def get_extracted_words(leta=None, vrste=None, kljucnebesede=None, udk=None): # noqa: E501 """Vrne terminloške kandidate glede na # noqa: E501 @@ -70,7 +70,7 @@ def get_files(leta, vrste, kljucnebesede, cerifpodrocja): # noqa: E501 return ' '.join(files), 200 -def get_number_texts(leta, vrste, kljucnebesede, cerifpodrocja): # noqa: E501 +def get_number_texts(leta=None, vrste=None, kljucnebesede=None, udk=None): # noqa: E501 """Vrne število besedil glede na iskalne pogoje # noqa: E501 @@ -86,9 +86,10 @@ def get_number_texts(leta, vrste, kljucnebesede, cerifpodrocja): # noqa: E501 :rtype: int """ - if not kljucnebesede: - return "Manjkajo kljucne besede", 400 - files = db_utils.get_files_by_udc(kljucnebesede) + #if not kljucnebesede: + # return "Manjkajo kljucne besede", 400 + + files = db_utils.vrni_oss_dokumente(leta, vrste, kljucnebesede, udk) return len(files), 200 diff --git a/swagger_server/requets_db/models/vrsta.py b/swagger_server/requets_db/models/vrsta.py index dbfd5f9..01c4558 100644 --- a/swagger_server/requets_db/models/vrsta.py +++ b/swagger_server/requets_db/models/vrsta.py @@ -43,7 +43,7 @@ class Job(BaseModel): input_file = TextField(index=True, null=True) -# db.drop_tables([Job]) # TODO: After pushing this, comment it and push again +db.drop_tables([Job]) # TODO: After pushing this, comment it and push again db.create_tables([Job]) diff --git a/swagger_server/swagger/swagger.yaml b/swagger_server/swagger/swagger.yaml index 2052337..4ef9144 100644 --- a/swagger_server/swagger/swagger.yaml +++ b/swagger_server/swagger/swagger.yaml @@ -293,7 +293,7 @@ paths: parameters: - name: leta in: query - required: true + required: false style: form explode: true schema: @@ -303,25 +303,7 @@ paths: format: int64 - name: vrste in: query - required: true - style: form - explode: true - schema: - type: array - items: - type: string - - name: kljucnebesede - in: query - required: true - style: form - explode: true - schema: - type: array - items: - type: string - - name: cerifpodrocja - in: query - required: true + required: false style: form explode: true schema: @@ -329,6 +311,24 @@ paths: items: type: integer format: int64 + - name: kljucnebesede + in: query + required: false + style: form + explode: true + schema: + type: array + items: + type: string + - name: udk + in: query + required: false + style: form + explode: true + schema: + type: array + items: + type: string responses: "200": description: OK @@ -364,7 +364,8 @@ paths: schema: type: array items: - type: string + type: integer + format: int64 - name: kljucnebesede in: query required: true @@ -374,7 +375,7 @@ paths: type: array items: type: string - - name: cerifpodrocja + - name: udk in: query required: true style: form @@ -382,8 +383,7 @@ paths: schema: type: array items: - type: integer - format: int64 + type: string responses: "200": description: OK diff --git a/swagger_server/utils/db_utils.py b/swagger_server/utils/db_utils.py index 44b3bfa..b34be74 100644 --- a/swagger_server/utils/db_utils.py +++ b/swagger_server/utils/db_utils.py @@ -2,30 +2,86 @@ import mariadb import os import sys - - database_info = { - 'database': os.environ.get("MDB_DATABASE", default="true"), - 'host': os.environ.get("MDB_HOST", default="true"), - 'port': os.environ.get("MDB_PORT", default="true"), - 'user': os.environ.get("MDB_USER", default="true"), - 'password': os.environ.get("MDB_PASSWORD", default="true"), + 'database': os.getenv("MDB_DATABASE", "oss"), + 'host': os.getenv("MDB_HOST", "localhost"), + 'port': int(os.getenv("PORT", 3306)) , + 'user': os.getenv("MDB_USER", "root"), + 'password': os.getenv("MDB_PASSWORD", "root"), } cur = None - # Connect to MariaDB Platform - def get_files_by_udc(udc): - ret = [] + ret = [] - try: + try: + print(database_info) conn = mariadb.connect(**database_info) cur = conn.cursor() - #cur.execute(f'SELECT * from os2022_ngrams WHERE file_id = {file_id}') + where_in = ','.join(['%s'] * len(udc)) + print(where_in) + sql = "select distinct xml_id from metadata_udc where udk IN (%s)" % (where_in) + print(sql) + cur.execute(sql,udc) #cur.execute(f'SELECT COUNT(*) FROM os2022_ngrams') - #ret = list(cur) + ret = list(cur) + except mariadb.Error as e: + print(f"Error connecting to MariaDB Platform: {e}") + + + return ret + +def vrni_oss_dokumente(leta, vrste, kljucnebesede, udk): + ret = [] + + try: + print(database_info) + conn = mariadb.connect(**database_info) + cur = conn.cursor() + + + + sql = "select distinct xml_id from metadata" + where="" + params=[] + if (udk): + where_in_udk = ','.join(['%s'] * len(udk)) + where=" udk IN (%s) " % (where_in_udk) + params=udk + + if (leta): + + where_in_leta = ','.join(['%s'] * len(leta)) + if (where): + where=where+ " AND " + where=where + " leto IN (%s) " % (where_in_leta) + params=params+leta + + if (vrste): + if (where): + where=where+ " AND " + where_in_vrste = ','.join(['%s'] * len(vrste)) + where=where + " tipologija IN (%s) " % (where_in_vrste) + params=params+vrste + + if (kljucnebesede): + if (where): + where=where+ " AND " + where_in_kb = ','.join(['%s'] * len(kljucnebesede)) + where=where + " kljucnabeseda IN (%s) " % (where_in_kb) + params=params+kljucnebesede + + if(where): + sql=sql+" where " + where + + print(sql) + print(params) + + cur.execute(sql,params) + + ret = list(cur) except mariadb.Error as e: print(f"Error connecting to MariaDB Platform: {e}") @@ -51,14 +107,14 @@ def get_files_by_udc(udc): # db.connect() -class Ngrams_Manager: - @staticmethod - def get_by_file_id(file_id): - try: +#class Ngrams_Manager: + #@staticmethod + #def get_by_file_id(file_id): + #try: # cur.execute(f'SELECT * from os2022_ngrams WHERE file_id = {file_id}') # cur.execute(f'SELECT COUNT(*) FROM os2022_ngrams') # return list(cur) - return 1 - except Exception as e: - print(e, 'EXC') - return 0 + # return 1 + #except Exception as e: + #print(e, 'EXC') + #return 0