diff --git a/SQL/site_data.sql b/SQL/site_data.sql index 6acf284..64bd041 100644 --- a/SQL/site_data.sql +++ b/SQL/site_data.sql @@ -1069,7 +1069,22 @@ VALUES - +CREATE TABLE members_webfiles ( + id SERIAL, + uid uuid DEFAULT uuid_generate_v4(), + member_id INT REFERENCES members(id) NOT NULL, + member_uid VARCHAR(100) NOT NULL, + file_group VARCHAR(25) NOT NULL, + filename VARCHAR(100) NOT NULL, + save_filename VARCHAR(100) NOT NULL, + file_type VARCHAR(50) NOT NULL, + file_size INT DEFAULT 0, + status INT DEFAULT 1, + added timestamp without time zone DEFAULT now(), + updated timestamp without time zone DEFAULT now() + ); + ALTER TABLE ONLY members_webfiles + ADD CONSTRAINT members_webfiles_id_key UNIQUE (id); diff --git a/app/api/routes/routes.py b/app/api/routes/routes.py index 7538ad6..25680f4 100644 --- a/app/api/routes/routes.py +++ b/app/api/routes/routes.py @@ -234,6 +234,12 @@ def merms_account_payments(): response = AccountService.process_payments_data(data) return response +@api.route("/panel/account/media-files", methods=["POST"]) +def get_websitefiles(): + data = request.get_json() + logger.info(f"Route FileUploadService URL Data ==>>>> {data}") + response = FileUploadService.member_webfiles(data) + return response @api.route("/panel/account/products/url", methods=["POST"]) def myproduct_url(): diff --git a/app/api/services/file_upload.py b/app/api/services/file_upload.py index 5e120cc..9a0e29d 100644 --- a/app/api/services/file_upload.py +++ b/app/api/services/file_upload.py @@ -12,12 +12,48 @@ from app.api.types.data_types import MemberFileData import os from werkzeug.utils import secure_filename import time - +from app.api.helpers.response_helper import ResponseHelper class FileUploadService(BaseService): UPLOAD_FOLDER = settings.UPLOAD_FOLDER # '/app/uploads' # '/uploads' ALLOWED_EXTENSIONS = {'txt', 'pdf', 'png', 'jpg', 'jpeg', 'gif'} + @staticmethod + def member_webfiles(data): + + try: + result_file_list = MembersWebfiles.get_member_webfiles_by_member_id(20) + file_list = [] + if result_file_list: + for t in result_file_list: + file_list.append({ + 'id': t.id, + 'uid': t.uid, + 'member_id': t.member_id, + 'member_uid': t.member_uid, + 'file_group': t.file_group, + 'filename': t.filename, + 'save_filename': t.save_filename, + 'file_type': t.file_type, + 'status': t.status, + 'file_size': t.file_size, + 'added': t.added, + 'updated': t.added.isoformat() if t.added else None + }) + + response_data = { + "file_list": file_list, + } + + return ResponseHelper.success(data=response_data) + + except Exception as e: + logger.error(f"An error occurred getting file list: {str(e)}", exc_info=True) + return jsonify({"message": "Internal Server Error"}), 500 + + + # return file_list + @staticmethod def process_file_upload(upload_type: str, file, member_uid): timestamp_integer = int(time.time()) diff --git a/app/models/members_webfiles.py b/app/models/members_webfiles.py index 0e5a775..ecbc89f 100644 --- a/app/models/members_webfiles.py +++ b/app/models/members_webfiles.py @@ -68,6 +68,14 @@ class MembersWebfiles(db.Model): } return save_result + @classmethod + def get_member_webfiles_by_member_id(cls, member_id): + member_webfile = cls.query.filter_by(member_id=str(member_id)).order_by(cls.added.desc()).all() + + if not member_webfile: + return None + return member_webfile + def to_dict(self): """ Convert the Loan object to a dictionary format for JSON serialization.