diff --git a/requirements.txt b/requirements.txt index b704732..dfe100b 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,6 +1,5 @@ flask==3.1.1 flask-cors==6.0.1 -flask-sqlalchemy==3.1.1 flexcache==0.3 flexparser==0.3.1 ipykernel==6.29.5 @@ -15,5 +14,4 @@ pydantic-core==2.27.2 pyproject-toml==0.1.0 python-dateutil==2.9.0 setuptools==75.8.2 -sqlalchemy==2.0.41 pytest diff --git a/scripts/init_db.py b/scripts/init_db.py deleted file mode 100644 index 379d1c4..0000000 --- a/scripts/init_db.py +++ /dev/null @@ -1,18 +0,0 @@ -from harmonization_framework.api.app import create_app -from harmonization_framework.api.extensions import db -import os - -app = create_app() - -with app.app_context(): - db.create_all() - print(app.config["SQLALCHEMY_DATABASE_URI"]) - print("Resolved path:", app.config["SQLALCHEMY_DATABASE_URI"].replace("sqlite:///", "")) - print("Database Initialized") - - upload_path = app.config["UPLOAD_FOLDER"] - if not os.path.exists(upload_path): - os.makedirs(upload_path) - print(f"Created uploads folder at: {upload_path}") - else: - print(f"Uploads folder already exists at: {upload_path}") diff --git a/src/harmonization_framework/api/app.py b/src/harmonization_framework/api/app.py index 53cd035..35ab300 100644 --- a/src/harmonization_framework/api/app.py +++ b/src/harmonization_framework/api/app.py @@ -1,22 +1,11 @@ -import os from flask import Flask -from harmonization_framework.api.extensions import db, register_extensions +from harmonization_framework.api.extensions import register_extensions from harmonization_framework.api.routes.health import health_blueprint -from harmonization_framework.api.routes.dictionaries import dictionaries_blueprint -from harmonization_framework.api.routes.projects import projects_blueprint - -basedir = os.getcwd() -db_path = os.path.join(basedir, "harmonization.db") def create_app(config_name=None): app = Flask(__name__, instance_relative_config=True) - app.config["SQLALCHEMY_DATABASE_URI"] = f"sqlite:///{db_path}" - app.config["SQLALCHEMY_TRACK_MODIFICATIONS"] = False - app.config["UPLOAD_FOLDER"] = "uploads" register_extensions(app) app.register_blueprint(health_blueprint, url_prefix="/health") - app.register_blueprint(dictionaries_blueprint, url_prefix="/data-dictionaries") - app.register_blueprint(projects_blueprint, url_prefix="/projects") return app diff --git a/src/harmonization_framework/api/extensions.py b/src/harmonization_framework/api/extensions.py index cd704ae..6f65660 100644 --- a/src/harmonization_framework/api/extensions.py +++ b/src/harmonization_framework/api/extensions.py @@ -1,8 +1,4 @@ from flask_cors import CORS -from flask_sqlalchemy import SQLAlchemy - -db = SQLAlchemy() def register_extensions(app): CORS(app) - db.init_app(app) diff --git a/src/harmonization_framework/api/harmonization_api_examples.md b/src/harmonization_framework/api/harmonization_api_examples.md index 6e0c804..3a4851f 100644 --- a/src/harmonization_framework/api/harmonization_api_examples.md +++ b/src/harmonization_framework/api/harmonization_api_examples.md @@ -4,12 +4,6 @@ The following is a demo for using `curl` to interact with the Harmonization Fram > Note: Replace UUIDs with actual values returned by your API where necessary. -## Initialize Database and File Store - -```bash -python scripts/init_db.py -``` - ## Start API ```bash diff --git a/src/harmonization_framework/api/models.py b/src/harmonization_framework/api/models.py deleted file mode 100644 index 1322db8..0000000 --- a/src/harmonization_framework/api/models.py +++ /dev/null @@ -1,71 +0,0 @@ -import json -from datetime import datetime -from harmonization_framework.api.extensions import db - -class HarmonizationRule(db.Model): - id = db.Column(db.String, primary_key=True) - source_target = db.Column(db.String, index=True) - project_id = db.Column(db.String, index=True) - version = db.Column(db.Integer, default=1) - rule_json = db.Column(db.Text) - created_at = db.Column(db.DateTime, default=datetime.now()) - - def to_dict(self): - return { - "id": self.id, - "source_target": self.source_target, - "project_id": self.project_id, - "version": self.version, - "rule_json": json.loads(self.rule_json), - "created_at": self.created_at.isoformat() - } - -class DataFile(db.Model): - id = db.Column(db.String, primary_key=True) - filename = db.Column(db.String) - storage_path = db.Column(db.String) - project_id = db.Column(db.String, index=True) - uploaded_at = db.Column(db.DateTime, default=datetime.now()) - dictionary_id = db.Column(db.String, db.ForeignKey("data_dictionary.id")) - - def to_dict(self): - return { - "id": self.id, - "filename": self.filename, - "storage_path": self.storage_path, - "project_id": self.project_id, - "uploaded_at": self.uploaded_at.isoformat() if self.uploaded_at else None, - "dictionary_id": self.dictionary_id - } - -class DataDictionary(db.Model): - id = db.Column(db.String, primary_key=True) - filename = db.Column(db.String) - storage_path = db.Column(db.String) - project_id = db.Column(db.String, index=True) - uploaded_at = db.Column(db.DateTime, default=datetime.now()) - - data_files = db.relationship("DataFile", backref="dictionary", lazy=True) - - def to_dict(self): - return { - "id": self.id, - "filename": self.filename, - "storage_path": self.storage_path, - "project_id": self.project_id, - "uploaded_at": self.uploaded_at.isoformat() if self.uploaded_at else None - } - -class Project(db.Model): - id = db.Column(db.String, primary_key=True) - name = db.Column(db.String, nullable=False) - description = db.Column(db.String) - created_at = db.Column(db.DateTime, default=datetime.now()) - - def to_dict(self): - return { - "id": self.id, - "name": self.name, - "description": self.description, - "created_at": self.created_at.isoformat() if self.created_at else None - }