merge: integrate backtests with main dataset catalog and sequence migration 0004
This commit is contained in:
@@ -310,3 +310,69 @@ class BacktestEvent(Base):
|
||||
kind: Mapped[str] = mapped_column(String(50))
|
||||
payload: Mapped[dict] = mapped_column(JSON)
|
||||
created_at: Mapped[datetime] = mapped_column(DateTime(timezone=True), default=now)
|
||||
|
||||
|
||||
class CatalogScope(Base):
|
||||
__tablename__ = "catalog_scopes"
|
||||
key: Mapped[str] = mapped_column(String(200), primary_key=True)
|
||||
scope: Mapped[dict] = mapped_column(JSON)
|
||||
catalog_version: Mapped[str | None] = mapped_column(String(36))
|
||||
synced_at: Mapped[datetime | None] = mapped_column(DateTime(timezone=True))
|
||||
|
||||
|
||||
class CatalogBatch(Base):
|
||||
__tablename__ = "catalog_batches"
|
||||
id: Mapped[str] = mapped_column(ForeignKey("sync_jobs.id"), primary_key=True)
|
||||
scope_key: Mapped[str] = mapped_column(ForeignKey("catalog_scopes.key"), index=True)
|
||||
dataset_id: Mapped[str | None] = mapped_column(String(200))
|
||||
complete: Mapped[bool] = mapped_column(Boolean, default=False)
|
||||
count: Mapped[int] = mapped_column(Integer, default=0)
|
||||
completed_at: Mapped[datetime | None] = mapped_column(DateTime(timezone=True))
|
||||
|
||||
|
||||
class CatalogDataset(Base):
|
||||
__tablename__ = "catalog_datasets"
|
||||
scope_key: Mapped[str] = mapped_column(ForeignKey("catalog_scopes.key"), primary_key=True)
|
||||
id: Mapped[str] = mapped_column(String(200), primary_key=True)
|
||||
field_version: Mapped[str | None] = mapped_column(ForeignKey("catalog_batches.id"))
|
||||
|
||||
|
||||
class CatalogEntry(Base):
|
||||
"""Immutable published snapshots; staging rows remain invisible until batch completion."""
|
||||
__tablename__ = "catalog_entries"
|
||||
batch_id: Mapped[str] = mapped_column(ForeignKey("catalog_batches.id"), primary_key=True)
|
||||
id: Mapped[str] = mapped_column(String(200), primary_key=True)
|
||||
name: Mapped[str | None] = mapped_column(Text)
|
||||
category: Mapped[str | None] = mapped_column(String(200))
|
||||
subcategory: Mapped[str | None] = mapped_column(String(200))
|
||||
field_type: Mapped[str | None] = mapped_column(String(100))
|
||||
coverage: Mapped[float | None] = mapped_column(Float)
|
||||
user_count: Mapped[int | None] = mapped_column(Integer)
|
||||
alpha_count: Mapped[int | None] = mapped_column(Integer)
|
||||
field_count: Mapped[int | None] = mapped_column(Integer)
|
||||
description: Mapped[str | None] = mapped_column(Text)
|
||||
unit: Mapped[str | None] = mapped_column(Text)
|
||||
synced_at: Mapped[datetime] = mapped_column(DateTime(timezone=True), default=now)
|
||||
|
||||
|
||||
class CatalogNote(Base):
|
||||
__tablename__ = "catalog_notes"
|
||||
scope_key: Mapped[str] = mapped_column(ForeignKey("catalog_scopes.key"), primary_key=True)
|
||||
dataset_id: Mapped[str] = mapped_column(String(200), primary_key=True)
|
||||
# Empty field_id denotes the dataset; platform identifiers cannot be empty.
|
||||
field_id: Mapped[str] = mapped_column(String(200), primary_key=True, default="")
|
||||
note: Mapped[str] = mapped_column(Text, default="")
|
||||
version: Mapped[int] = mapped_column(Integer, default=1)
|
||||
updated_at: Mapped[datetime] = mapped_column(DateTime(timezone=True), default=now)
|
||||
|
||||
|
||||
class TemplateInput(Base):
|
||||
__tablename__ = "template_inputs"
|
||||
id: Mapped[str] = mapped_column(String(36), primary_key=True)
|
||||
scope_key: Mapped[str] = mapped_column(ForeignKey("catalog_scopes.key"), index=True)
|
||||
dataset_id: Mapped[str] = mapped_column(String(200))
|
||||
collection_version: Mapped[str] = mapped_column(ForeignKey("catalog_batches.id"))
|
||||
selection: Mapped[str] = mapped_column(String(20))
|
||||
field_ids: Mapped[list] = mapped_column(JSON)
|
||||
field_types: Mapped[dict] = mapped_column(JSON)
|
||||
created_at: Mapped[datetime] = mapped_column(DateTime(timezone=True), default=now)
|
||||
|
||||
Reference in New Issue
Block a user