mirror of
https://github.com/langbot-app/LangBot.git
synced 2026-08-09 20:50:58 +00:00
feat(tenancy): implement workspace isolation
This commit is contained in:
@@ -9,6 +9,11 @@ class LegacyPipeline(Base):
|
||||
__tablename__ = 'legacy_pipelines'
|
||||
|
||||
uuid = sqlalchemy.Column(sqlalchemy.String(255), primary_key=True, unique=True)
|
||||
workspace_uuid = sqlalchemy.Column(
|
||||
sqlalchemy.String(36),
|
||||
sqlalchemy.ForeignKey('workspaces.uuid', ondelete='CASCADE'),
|
||||
nullable=False,
|
||||
)
|
||||
name = sqlalchemy.Column(sqlalchemy.String(255), nullable=False)
|
||||
description = sqlalchemy.Column(sqlalchemy.String(255), nullable=False)
|
||||
emoji = sqlalchemy.Column(sqlalchemy.String(10), nullable=True, default='⚙️')
|
||||
@@ -36,6 +41,16 @@ class LegacyPipeline(Base):
|
||||
},
|
||||
)
|
||||
|
||||
__table_args__ = (
|
||||
sqlalchemy.UniqueConstraint(
|
||||
'workspace_uuid',
|
||||
'uuid',
|
||||
name='uq_legacy_pipelines_workspace_uuid',
|
||||
),
|
||||
sqlalchemy.Index('ix_legacy_pipelines_workspace_name', 'workspace_uuid', 'name'),
|
||||
sqlalchemy.Index('ix_legacy_pipelines_workspace_default', 'workspace_uuid', 'is_default'),
|
||||
)
|
||||
|
||||
|
||||
class PipelineRunRecord(Base):
|
||||
"""Pipeline run record"""
|
||||
@@ -43,6 +58,11 @@ class PipelineRunRecord(Base):
|
||||
__tablename__ = 'pipeline_run_records'
|
||||
|
||||
uuid = sqlalchemy.Column(sqlalchemy.String(255), primary_key=True, unique=True)
|
||||
workspace_uuid = sqlalchemy.Column(
|
||||
sqlalchemy.String(36),
|
||||
sqlalchemy.ForeignKey('workspaces.uuid', ondelete='CASCADE'),
|
||||
nullable=False,
|
||||
)
|
||||
pipeline_uuid = sqlalchemy.Column(sqlalchemy.String(255), nullable=False)
|
||||
status = sqlalchemy.Column(sqlalchemy.String(255), nullable=False)
|
||||
created_at = sqlalchemy.Column(sqlalchemy.DateTime, nullable=False, server_default=sqlalchemy.func.now())
|
||||
@@ -56,3 +76,22 @@ class PipelineRunRecord(Base):
|
||||
finished_at = sqlalchemy.Column(sqlalchemy.DateTime, nullable=False)
|
||||
result = sqlalchemy.Column(sqlalchemy.JSON, nullable=False)
|
||||
knowledge_base_uuid = sqlalchemy.Column(sqlalchemy.String(255), nullable=True)
|
||||
|
||||
__table_args__ = (
|
||||
sqlalchemy.ForeignKeyConstraint(
|
||||
['workspace_uuid', 'pipeline_uuid'],
|
||||
['legacy_pipelines.workspace_uuid', 'legacy_pipelines.uuid'],
|
||||
name='fk_pipeline_run_records_workspace_pipeline',
|
||||
ondelete='CASCADE',
|
||||
),
|
||||
sqlalchemy.Index(
|
||||
'ix_pipeline_run_records_workspace_pipeline',
|
||||
'workspace_uuid',
|
||||
'pipeline_uuid',
|
||||
),
|
||||
sqlalchemy.Index(
|
||||
'ix_pipeline_run_records_workspace_created',
|
||||
'workspace_uuid',
|
||||
'created_at',
|
||||
),
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user