Skip to content

Commit 2b5f9ff

Browse files
Merge pull request #14 from mglbleta/Mei_LinkML
Mei link ml cleanup
2 parents eee7e86 + 2915797 commit 2b5f9ff

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

68 files changed

+24949
-2060
lines changed

README.md

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,8 @@ data access.
1010
This project uses a **PEP 420 namespace package** structure with three main
1111
components:
1212

13-
- **`ca_biositing.datamodels`**: Shared SQLModel database models and database
14-
configuration
13+
- **`ca_biositing.datamodels`**: Shared LinkML/SQLModel database models and
14+
database configuration
1515
- **`ca_biositing.pipeline`**: ETL pipelines orchestrated with Prefect, deployed
1616
via Docker
1717
- **`ca_biositing.webservice`**: FastAPI REST API for data access
@@ -152,6 +152,7 @@ Key tasks:
152152
- **Development**: `test`, `test-cov`, `pre-commit`, `pre-commit-all`
153153
- **Applications**: `start-webservice`, `qgis`
154154
- **Database**: `access-db`, `check-db-health`
155+
- **Datamodels**: `update-schema`, `migrate`
155156

156157
## Architecture
157158

@@ -181,6 +182,15 @@ Pipeline architecture:
181182

182183
### Database Models
183184

185+
We use a **LinkML-first approach** for defining our data schema. The workflow
186+
is:
187+
188+
1. **LinkML Schema**: The schema is defined in YAML files (source of truth).
189+
2. **SQLAlchemy Generation**: Python classes are automatically generated from
190+
LinkML.
191+
3. **Alembic Migrations**: Database migrations are generated from the Python
192+
classes.
193+
184194
SQLModel-based models provide:
185195

186196
- Type-safe database operations

alembic/env.py

Lines changed: 14 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -13,17 +13,18 @@
1313
load_dotenv(dotenv_path=PROJECT_ROOT / ".env") # Looks for .env in the project root by default
1414

1515
# --- Import your models so Alembic knows about them ---
16-
from ca_biositing.datamodels.biomass import *
17-
from ca_biositing.datamodels.data_and_references import *
18-
from ca_biositing.datamodels.experiments_analysis import *
19-
from ca_biositing.datamodels.external_datasets import *
20-
from ca_biositing.datamodels.geographic_locations import *
21-
from ca_biositing.datamodels.metadata_samples import *
22-
from ca_biositing.datamodels.organizations import *
23-
from ca_biositing.datamodels.people_contacts import *
24-
from ca_biositing.datamodels.sample_preprocessing import *
25-
from ca_biositing.datamodels.specific_aalysis_results import *
26-
from ca_biositing.datamodels.user import *
16+
# from ca_biositing.datamodels.biomass import *
17+
# from ca_biositing.datamodels.data_and_references import *
18+
# from ca_biositing.datamodels.experiments_analysis import *
19+
# from ca_biositing.datamodels.external_datasets import *
20+
# from ca_biositing.datamodels.geographic_locations import *
21+
# from ca_biositing.datamodels.metadata_samples import *
22+
# from ca_biositing.datamodels.organizations import *
23+
# from ca_biositing.datamodels.people_contacts import *
24+
# from ca_biositing.datamodels.sample_preprocessing import *
25+
# from ca_biositing.datamodels.specific_aalysis_results import *
26+
# from ca_biositing.datamodels.user import *
27+
from ca_biositing.datamodels.schemas.generated.ca_biositing import *
2728
from sqlmodel import SQLModel
2829
import importlib.util
2930
from pathlib import Path
@@ -51,7 +52,8 @@
5152
# See: https://alembic.sqlalchemy.org/en/latest/autogenerate.html#affecting-the-autogenerate-process
5253

5354
# Start with the default SQLModel metadata
54-
target_metadata = SQLModel.metadata
55+
# target_metadata = SQLModel.metadata
56+
target_metadata = Base.metadata
5557

5658
# Manually merge metadata from generated modules
5759
# for table in census_metadata.tables.values():

alembic/versions/301006b4795f_initial_migration.py renamed to alembic/versions/184417c6d044_deleted_duplicate_yaml_files.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
1-
"""Initial migration
1+
"""Deleted duplicate .yaml files
22
3-
Revision ID: 301006b4795f
4-
Revises: e15bda744fef
5-
Create Date: 2025-11-12 20:54:01.573577
3+
Revision ID: 184417c6d044
4+
Revises: bfa07351a507
5+
Create Date: 2025-12-17 19:03:32.278635
66
77
"""
88
from typing import Sequence, Union
@@ -12,8 +12,8 @@
1212

1313

1414
# revision identifiers, used by Alembic.
15-
revision: str = '301006b4795f'
16-
down_revision: Union[str, Sequence[str], None] = 'e15bda744fef'
15+
revision: str = '184417c6d044'
16+
down_revision: Union[str, Sequence[str], None] = 'bfa07351a507'
1717
branch_labels: Union[str, Sequence[str], None] = None
1818
depends_on: Union[str, Sequence[str], None] = None
1919

0 commit comments

Comments
 (0)