Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
34 changes: 26 additions & 8 deletions alphatrion/metadata/sql.py
Original file line number Diff line number Diff line change
Expand Up @@ -198,7 +198,13 @@ def get_model(self, model_id: uuid.UUID) -> Model | None:

def list_models(self, page: int = 0, page_size: int = 10) -> list[Model]:
session = self._session()
models = session.query(Model).offset(page * page_size).limit(page_size).all()
models = (
session.query(Model)
.filter(Model.is_del == 0)
.offset(page * page_size)
.limit(page_size)
.all()
)
session.close()
return models

Expand Down Expand Up @@ -244,7 +250,11 @@ def create_trial(

def get_trial(self, trial_id: uuid.UUID) -> Trial | None:
session = self._session()
trial = session.query(Trial).filter(Trial.uuid == trial_id).first()
trial = (
session.query(Trial)
.filter(Trial.uuid == trial_id, Trial.is_del == 0)
.first()
)
session.close()
return trial

Expand All @@ -260,7 +270,11 @@ def get_trial_by_name(
session = self._session()
trial = (
session.query(Trial)
.filter(Trial.name == trial_name, Trial.experiment_id == experiment_id)
.filter(
Trial.name == trial_name,
Trial.experiment_id == experiment_id,
Trial.is_del == 0,
)
.first()
)
session.close()
Expand All @@ -272,7 +286,7 @@ def list_trials_by_experiment_id(
session = self._session()
trials = (
session.query(Trial)
.filter(Trial.experiment_id == experiment_id)
.filter(Trial.experiment_id == experiment_id, Trial.is_del == 0)
.offset(page * page_size)
.limit(page_size)
.all()
Expand All @@ -282,7 +296,11 @@ def list_trials_by_experiment_id(

def update_trial(self, trial_id: uuid.UUID, **kwargs) -> None:
session = self._session()
trial = session.query(Trial).filter(Trial.uuid == trial_id).first()
trial = (
session.query(Trial)
.filter(Trial.uuid == trial_id, Trial.is_del == 0)
.first()
)
if trial:
for key, value in kwargs.items():
setattr(trial, key, value)
Expand Down Expand Up @@ -314,7 +332,7 @@ def create_run(

def update_run(self, run_id: uuid.UUID, **kwargs) -> None:
session = self._session()
run = session.query(Run).filter(Run.uuid == run_id).first()
run = session.query(Run).filter(Run.uuid == run_id, Run.is_del == 0).first()
if run:
for key, value in kwargs.items():
setattr(run, key, value)
Expand All @@ -323,7 +341,7 @@ def update_run(self, run_id: uuid.UUID, **kwargs) -> None:

def get_run(self, run_id: uuid.UUID) -> Run | None:
session = self._session()
run = session.query(Run).filter(Run.uuid == run_id).first()
run = session.query(Run).filter(Run.uuid == run_id, Run.is_del == 0).first()
session.close()
return run

Expand All @@ -333,7 +351,7 @@ def list_runs_by_trial_id(
session = self._session()
runs = (
session.query(Run)
.filter(Run.trial_id == trial_id)
.filter(Run.trial_id == trial_id, Run.is_del == 0)
.offset(page * page_size)
.limit(page_size)
.all()
Expand Down
13 changes: 13 additions & 0 deletions alphatrion/metadata/sql_models.py
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,11 @@ class Project(Base):
is_del = Column(Integer, default=0, comment="0 for not deleted, 1 for deleted")


class ExperimentType(enum.IntEnum):
UNKNOWN = 0
CRAFT_EXPERIMENT = 1


# Define the Experiment model for SQLAlchemy
class Experiment(Base):
__tablename__ = "experiments"
Expand All @@ -55,6 +60,12 @@ class Experiment(Base):
description = Column(String, nullable=True)
project_id = Column(UUID(as_uuid=True), nullable=False)
meta = Column(JSON, nullable=True, comment="Additional metadata for the experiment")
kind = Column(
Integer,
default=ExperimentType.CRAFT_EXPERIMENT,
nullable=False,
comment="Type of the experiment",
)

created_at = Column(DateTime(timezone=True), default=lambda: datetime.now(UTC))
updated_at = Column(
Expand Down Expand Up @@ -91,6 +102,7 @@ class Trial(Base):
default=lambda: datetime.now(UTC),
onupdate=lambda: datetime.now(UTC),
)
is_del = Column(Integer, default=0, comment="0 for not deleted, 1 for deleted")


class Run(Base):
Expand All @@ -116,6 +128,7 @@ class Run(Base):
default=lambda: datetime.now(UTC),
onupdate=lambda: datetime.now(UTC),
)
is_del = Column(Integer, default=0, comment="0 for not deleted, 1 for deleted")


class Model(Base):
Expand Down
4 changes: 4 additions & 0 deletions alphatrion/server/graphql/resolvers.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@

from .types import (
Experiment,
GraphQLExperimentType,
GraphQLExperimentTypeEnum,
GraphQLStatusEnum,
Metric,
Project,
Expand Down Expand Up @@ -58,6 +60,7 @@ def list_experiments(
name=exp.name,
description=exp.description,
meta=exp.meta,
kind=GraphQLExperimentTypeEnum[GraphQLExperimentType(exp.kind).name],
created_at=exp.created_at,
updated_at=exp.updated_at,
)
Expand All @@ -75,6 +78,7 @@ def get_experiment(id: str) -> Experiment | None:
name=exp.name,
description=exp.description,
meta=exp.meta,
kind=GraphQLExperimentTypeEnum[GraphQLExperimentType(exp.kind).name],
created_at=exp.created_at,
updated_at=exp.updated_at,
)
Expand Down
9 changes: 9 additions & 0 deletions alphatrion/server/graphql/types.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,11 +14,20 @@ class Project:
updated_at: datetime


class GraphQLExperimentType(Enum):
UNKNOWN = 0
CRAFT_EXPERIMENT = 1


GraphQLExperimentTypeEnum = strawberry.enum(GraphQLExperimentType)


@strawberry.type
class Experiment:
id: strawberry.ID
project_id: strawberry.ID | None
name: str | None
kind: GraphQLExperimentTypeEnum
description: str | None
meta: JSON | None
created_at: datetime
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
"""init

Revision ID: 9bdb19876524
Revision ID: 648be86800d3
Revises:
Create Date: 2025-11-27 11:40:37.154216
Create Date: 2025-11-27 18:12:04.027865

"""
from typing import Sequence, Union
Expand All @@ -12,7 +12,7 @@


# revision identifiers, used by Alembic.
revision: str = '9bdb19876524'
revision: str = '648be86800d3'
down_revision: Union[str, Sequence[str], None] = None
branch_labels: Union[str, Sequence[str], None] = None
depends_on: Union[str, Sequence[str], None] = None
Expand All @@ -27,6 +27,7 @@ def upgrade() -> None:
sa.Column('description', sa.String(), nullable=True),
sa.Column('project_id', sa.UUID(), nullable=False),
sa.Column('meta', sa.JSON(), nullable=True, comment='Additional metadata for the experiment'),
sa.Column('kind', sa.Integer(), nullable=False, comment='Type of the experiment'),
sa.Column('created_at', sa.DateTime(timezone=True), nullable=True),
sa.Column('updated_at', sa.DateTime(timezone=True), nullable=True),
sa.Column('is_del', sa.Integer(), nullable=True, comment='0 for not deleted, 1 for deleted'),
Expand Down Expand Up @@ -75,6 +76,7 @@ def upgrade() -> None:
sa.Column('status', sa.Integer(), nullable=False, comment='Status of the run, 0: UNKNOWN, 1: PENDING, 2: RUNNING, 9: COMPLETED, 10: CANCELLED, 11: FAILED'),
sa.Column('created_at', sa.DateTime(timezone=True), nullable=True),
sa.Column('updated_at', sa.DateTime(timezone=True), nullable=True),
sa.Column('is_del', sa.Integer(), nullable=True, comment='0 for not deleted, 1 for deleted'),
sa.PrimaryKeyConstraint('uuid')
)
op.create_table('trials',
Expand All @@ -89,6 +91,7 @@ def upgrade() -> None:
sa.Column('status', sa.Integer(), nullable=False, comment='Status of the trial, 0: UNKNOWN, 1: PENDING, 2: RUNNING, 9: COMPLETED, 10: CANCELLED, 11: FAILED'),
sa.Column('created_at', sa.DateTime(timezone=True), nullable=True),
sa.Column('updated_at', sa.DateTime(timezone=True), nullable=True),
sa.Column('is_del', sa.Integer(), nullable=True, comment='0 for not deleted, 1 for deleted'),
sa.PrimaryKeyConstraint('uuid')
)
# ### end Alembic commands ###
Expand Down
2 changes: 2 additions & 0 deletions tests/integration/server/test_graphql_query.py
Original file line number Diff line number Diff line change
Expand Up @@ -75,6 +75,7 @@ def test_query_single_experiment():
name
description
meta
kind
createdAt
updatedAt
}}
Expand Down Expand Up @@ -117,6 +118,7 @@ def test_query_experiments():
name
description
meta
kind
createdAt
updatedAt
}}
Expand Down
Loading