Upload files to "300_architecture/database"
`sqlcodegen`을 사용하여 추출한 ORM 추가
This commit is contained in:
parent
3a929a97d7
commit
67ce62d4ab
240
300_architecture/database/main_db.py
Normal file
240
300_architecture/database/main_db.py
Normal file
@ -0,0 +1,240 @@
|
||||
from typing import Optional
|
||||
import datetime
|
||||
import uuid
|
||||
|
||||
from sqlalchemy import (ARRAY, Boolean, DateTime, Double, Enum, ForeignKeyConstraint, Index, Integer, JSON, PrimaryKeyConstraint, String, Time, UniqueConstraint, Uuid, text, Sequence, func)
|
||||
from sqlalchemy.dialects.postgresql import JSONB
|
||||
from sqlalchemy.orm import DeclarativeBase, Mapped, mapped_column, relationship
|
||||
|
||||
class Base(DeclarativeBase):
|
||||
pass
|
||||
|
||||
|
||||
class Company(Base):
|
||||
__tablename__ = 'company'
|
||||
__table_args__ = (
|
||||
PrimaryKeyConstraint('id', name='company_pk'),
|
||||
)
|
||||
|
||||
id: Mapped[uuid.UUID] = mapped_column(Uuid, primary_key=True, default=uuid.uuid4)
|
||||
name: Mapped[str] = mapped_column(String(255), nullable=False)
|
||||
url: Mapped[Optional[str]] = mapped_column(String(255))
|
||||
created_at: Mapped[Optional[datetime.datetime]] = mapped_column(DateTime(True), server_default=func.now())
|
||||
updated_at: Mapped[Optional[datetime.datetime]] = mapped_column(DateTime(True), server_default=func.now(), onupdate=func.now())
|
||||
|
||||
team: Mapped[list['Team']] = relationship('Team', back_populates='company')
|
||||
|
||||
|
||||
class Product(Base):
|
||||
__tablename__ = 'product'
|
||||
__table_args__ = (
|
||||
PrimaryKeyConstraint('id', name='product_pk'),
|
||||
)
|
||||
|
||||
id: Mapped[uuid.UUID] = mapped_column(Uuid, primary_key=True, default=uuid.uuid4)
|
||||
name: Mapped[str] = mapped_column(String(32), nullable=False)
|
||||
app_id: Mapped[Optional[str]] = mapped_column(String(16))
|
||||
scope: Mapped[Optional[dict]] = mapped_column(JSON)
|
||||
description: Mapped[Optional[str]] = mapped_column(String(256))
|
||||
created_at: Mapped[Optional[datetime.datetime]] = mapped_column(DateTime(True), server_default=func.now())
|
||||
updated_at: Mapped[Optional[datetime.datetime]] = mapped_column(DateTime(True), server_default=func.now(), onupdate=func.now())
|
||||
|
||||
robeing: Mapped[list['Robeing']] = relationship('Robeing', back_populates='product')
|
||||
|
||||
|
||||
class Team(Base):
|
||||
__tablename__ = 'team'
|
||||
__table_args__ = (
|
||||
ForeignKeyConstraint(['company_id'], ['company.id'], name='team_company_id_fk'),
|
||||
PrimaryKeyConstraint('id', name='team_pk')
|
||||
)
|
||||
|
||||
id: Mapped[uuid.UUID] = mapped_column(Uuid, primary_key=True, default=uuid.uuid4)
|
||||
company_id: Mapped[uuid.UUID] = mapped_column(Uuid, nullable=False)
|
||||
name: Mapped[str] = mapped_column(String(32), nullable=False)
|
||||
is_default: Mapped[bool] = mapped_column(Boolean, nullable=False, server_default=Boolean(False))
|
||||
created_at: Mapped[Optional[datetime.datetime]] = mapped_column(DateTime(True), server_default=func.now())
|
||||
updated_at: Mapped[Optional[datetime.datetime]] = mapped_column(DateTime(True), server_default=func.now(), onupdate=func.now())
|
||||
|
||||
company: Mapped['Company'] = relationship('Company', back_populates='team')
|
||||
robeing: Mapped[list['Robeing']] = relationship('Robeing', back_populates='team')
|
||||
slack_workspace: Mapped[list['SlackWorkspace']] = relationship('SlackWorkspace', back_populates='team')
|
||||
user: Mapped[list['User']] = relationship('User', back_populates='team')
|
||||
|
||||
|
||||
class Robeing(Base):
|
||||
__tablename__ = 'robeing'
|
||||
__table_args__ = (
|
||||
ForeignKeyConstraint(['product_id'], ['product.id'], name='robeing_product_id_fk'),
|
||||
ForeignKeyConstraint(['team_id'], ['team.id'], name='robeing_team_id_fk'),
|
||||
PrimaryKeyConstraint('id', name='robeing_pk')
|
||||
)
|
||||
|
||||
id: Mapped[uuid.UUID] = mapped_column(Uuid, primary_key=True, default=uuid.uuid4)
|
||||
product_id: Mapped[uuid.UUID] = mapped_column(Uuid, nullable=False)
|
||||
team_id: Mapped[uuid.UUID] = mapped_column(Uuid, nullable=False)
|
||||
name: Mapped[Optional[str]] = mapped_column(String(32))
|
||||
level: Mapped[Optional[int]] = mapped_column(Integer, server_default=Integer(1))
|
||||
experience: Mapped[Optional[int]] = mapped_column(Integer, server_default=Integer(0))
|
||||
memory: Mapped[Optional[int]] = mapped_column(Integer, server_default=Integer(10))
|
||||
compute: Mapped[Optional[int]] = mapped_column(Integer, server_default=Integer(10))
|
||||
react: Mapped[Optional[int]] = mapped_column(Integer, server_default=Integer(10))
|
||||
empathy: Mapped[Optional[int]] = mapped_column(Integer, server_default=Integer(10))
|
||||
leadership: Mapped[Optional[int]] = mapped_column(Integer, server_default=Integer(10))
|
||||
updated_at: Mapped[Optional[datetime.datetime]] = mapped_column(DateTime(True), server_default=func.now(), onupdate=func.now())
|
||||
created_at: Mapped[Optional[datetime.datetime]] = mapped_column(DateTime(True), server_default=func.now())
|
||||
robeing_container_id: Mapped[Optional[str]] = mapped_column(String(64))
|
||||
robeing_container_url: Mapped[Optional[str]] = mapped_column(String(128))
|
||||
|
||||
product: Mapped['Product'] = relationship('Product', back_populates='robeing')
|
||||
team: Mapped['Team'] = relationship('Team', back_populates='robeing')
|
||||
|
||||
|
||||
class SlackWorkspace(Base):
|
||||
__tablename__ = 'slack_workspace'
|
||||
__table_args__ = (
|
||||
ForeignKeyConstraint(['team_id'], ['team.id'], name='slack_workspace_team_id_fk'),
|
||||
PrimaryKeyConstraint('id', name='slack_workspace_pk')
|
||||
)
|
||||
|
||||
id: Mapped[uuid.UUID] = mapped_column(Uuid, primary_key=True, default=uuid.uuid4)
|
||||
team_id: Mapped[uuid.UUID] = mapped_column(Uuid, nullable=False)
|
||||
slack_team_id: Mapped[Optional[str]] = mapped_column(String(32))
|
||||
bot_token: Mapped[Optional[str]] = mapped_column(String(255))
|
||||
is_enterprise_install: Mapped[Optional[bool]] = mapped_column(Boolean, server_default=Boolean(True))
|
||||
is_active: Mapped[Optional[bool]] = mapped_column(Boolean)
|
||||
installed_at: Mapped[Optional[datetime.datetime]] = mapped_column(DateTime(True), server_default=func.now())
|
||||
created_at: Mapped[Optional[datetime.datetime]] = mapped_column(DateTime(True), server_default=func.now())
|
||||
updated_at: Mapped[Optional[datetime.datetime]] = mapped_column(DateTime(True), server_default=func.now(), onupdate=func.now())
|
||||
|
||||
team: Mapped['Team'] = relationship('Team', back_populates='slack_workspace')
|
||||
|
||||
|
||||
class User(Base):
|
||||
__tablename__ = 'user'
|
||||
__table_args__ = (
|
||||
ForeignKeyConstraint(['team_id'], ['team.id'], name='user_team_id_fk'),
|
||||
PrimaryKeyConstraint('id', name='user_pk'),
|
||||
UniqueConstraint('email', name='users_email_key')
|
||||
)
|
||||
|
||||
id: Mapped[uuid.UUID] = mapped_column(Uuid, primary_key=True, default=uuid.uuid4)
|
||||
team_id: Mapped[uuid.UUID] = mapped_column(Uuid, nullable=False)
|
||||
email: Mapped[str] = mapped_column(String(255), nullable=False)
|
||||
username: Mapped[Optional[str]] = mapped_column(String(64))
|
||||
name: Mapped[Optional[str]] = mapped_column(String(255))
|
||||
picture: Mapped[Optional[str]] = mapped_column(String(500))
|
||||
oauth_provider: Mapped[Optional[str]] = mapped_column(String(50))
|
||||
oauth_id: Mapped[Optional[str]] = mapped_column(String(255))
|
||||
is_active: Mapped[Optional[bool]] = mapped_column(Boolean)
|
||||
is_admin: Mapped[bool] = mapped_column(Boolean, nullable=False, server_default=Boolean(False))
|
||||
last_login_at: Mapped[Optional[datetime.datetime]] = mapped_column(DateTime(True))
|
||||
created_at: Mapped[Optional[datetime.datetime]] = mapped_column(DateTime(True), server_default=func.now())
|
||||
updated_at: Mapped[Optional[datetime.datetime]] = mapped_column(DateTime(True), server_default=func.now(), onupdate=func.now())
|
||||
|
||||
team: Mapped['Team'] = relationship('Team', back_populates='user')
|
||||
conversation_log: Mapped[list['ConversationLog']] = relationship('ConversationLog', back_populates='user')
|
||||
gmail_token: Mapped[list['GmailToken']] = relationship('GmailToken', back_populates='user')
|
||||
news: Mapped[list['News']] = relationship('News', back_populates='user')
|
||||
user_preference: Mapped[list['UserPreference']] = relationship('UserPreference', back_populates='user')
|
||||
workspace_member: Mapped[list['WorkspaceMember']] = relationship('WorkspaceMember', back_populates='user')
|
||||
|
||||
|
||||
class ConversationLog(Base):
|
||||
__tablename__ = 'conversation_log'
|
||||
__table_args__ = (
|
||||
ForeignKeyConstraint(['user_id'], ['user.id'], name='conversation_log_user_id'),
|
||||
PrimaryKeyConstraint('id', name='conversation_log_pk')
|
||||
)
|
||||
|
||||
id: Mapped[int] = mapped_column(Integer, Sequence('conversation_log_id_seq'), primary_key=True)
|
||||
user_id: Mapped[uuid.UUID] = mapped_column(Uuid, nullable=False)
|
||||
channel_id: Mapped[Optional[str]] = mapped_column(String(16))
|
||||
message: Mapped[Optional[str]] = mapped_column(String)
|
||||
response: Mapped[Optional[str]] = mapped_column(String)
|
||||
intent: Mapped[Optional[str]] = mapped_column(String(256))
|
||||
confidence: Mapped[Optional[float]] = mapped_column(Double(53))
|
||||
thread_ts: Mapped[Optional[str]] = mapped_column(String(128))
|
||||
timestamp: Mapped[Optional[datetime.datetime]] = mapped_column(DateTime(True))
|
||||
channel_type: Mapped[Optional[str]] = mapped_column(String(32))
|
||||
|
||||
user: Mapped['User'] = relationship('User', back_populates='conversation_log')
|
||||
|
||||
|
||||
class GmailToken(Base):
|
||||
__tablename__ = 'gmail_token'
|
||||
__table_args__ = (
|
||||
ForeignKeyConstraint(['user_id'], ['user.id'], name='user_id_fk'),
|
||||
PrimaryKeyConstraint('id', name='gmail_token_pk'),
|
||||
Index('idx_gmail_token_oauth_config', 'oauth_config'),
|
||||
Index('idx_gmail_token_token_data', 'token_data')
|
||||
)
|
||||
|
||||
id: Mapped[uuid.UUID] = mapped_column(Uuid, primary_key=True, default=uuid.uuid4)
|
||||
user_id: Mapped[uuid.UUID] = mapped_column(Uuid, nullable=False)
|
||||
token_data: Mapped[Optional[dict]] = mapped_column(JSONB)
|
||||
oauth_config: Mapped[Optional[dict]] = mapped_column(JSONB)
|
||||
scopes: Mapped[Optional[dict]] = mapped_column(JSONB)
|
||||
metadata_: Mapped[Optional[dict]] = mapped_column('metadata', JSONB)
|
||||
expiry: Mapped[Optional[datetime.datetime]] = mapped_column(DateTime)
|
||||
is_equipped: Mapped[Optional[bool]] = mapped_column(Boolean, server_default=Boolean(False))
|
||||
equipped_to: Mapped[Optional[str]] = mapped_column(String(50))
|
||||
token_type: Mapped[Optional[str]] = mapped_column(String, server_default=text("'Bearer'::character varying"))
|
||||
expires_at: Mapped[Optional[float]] = mapped_column(Double(53))
|
||||
created_at: Mapped[Optional[datetime.datetime]] = mapped_column(DateTime(True), server_default=func.now())
|
||||
updated_at: Mapped[Optional[datetime.datetime]] = mapped_column(DateTime(True), server_default=func.now(), onupdate=func.now())
|
||||
|
||||
user: Mapped['User'] = relationship('User', back_populates='gmail_token')
|
||||
|
||||
|
||||
class News(Base):
|
||||
__tablename__ = 'news'
|
||||
__table_args__ = (
|
||||
ForeignKeyConstraint(['user_id'], ['user.id'], name='news_user_id_fk'),
|
||||
PrimaryKeyConstraint('id', name='news_pk')
|
||||
)
|
||||
|
||||
id: Mapped[uuid.UUID] = mapped_column(Uuid, primary_key=True, default=uuid.uuid4)
|
||||
user_id: Mapped[Optional[uuid.UUID]] = mapped_column(Uuid)
|
||||
data: Mapped[Optional[dict]] = mapped_column(JSONB)
|
||||
created_at: Mapped[Optional[datetime.datetime]] = mapped_column(DateTime(True), server_default=func.now())
|
||||
updated_at: Mapped[Optional[datetime.datetime]] = mapped_column(DateTime(True), server_default=func.now(), onupdate=func.now())
|
||||
|
||||
user: Mapped[Optional['User']] = relationship('User', back_populates='news')
|
||||
|
||||
|
||||
class UserPreference(Base):
|
||||
__tablename__ = 'user_preference'
|
||||
__table_args__ = (
|
||||
ForeignKeyConstraint(['user_id'], ['user.id'], name='user_preference_user_id_fk'),
|
||||
PrimaryKeyConstraint('id', name='user_preference_pk')
|
||||
)
|
||||
|
||||
user_id: Mapped[uuid.UUID] = mapped_column(Uuid, nullable=False)
|
||||
id: Mapped[uuid.UUID] = mapped_column(Uuid, primary_key=True, default=uuid.uuid4)
|
||||
news_keywords: Mapped[Optional[list[str]]] = mapped_column(ARRAY(String(length=128)))
|
||||
email_filter: Mapped[Optional[list[str]]] = mapped_column(ARRAY(String(length=128)))
|
||||
briefing_enabled: Mapped[Optional[bool]] = mapped_column(Boolean, server_default=Boolean(True))
|
||||
briefing_time: Mapped[Optional[datetime.time]] = mapped_column(Time, server_default=text("'09:00:00'::time without time zone"))
|
||||
created_at: Mapped[Optional[datetime.datetime]] = mapped_column(DateTime(True), server_default=func.now())
|
||||
updated_at: Mapped[Optional[datetime.datetime]] = mapped_column(DateTime(True), server_default=func.now(), onupdate=func.now())
|
||||
|
||||
user: Mapped['User'] = relationship('User', back_populates='user_preference')
|
||||
|
||||
|
||||
class WorkspaceMember(Base):
|
||||
__tablename__ = 'workspace_member'
|
||||
__table_args__ = (
|
||||
ForeignKeyConstraint(['user_id'], ['user.id'], name='workspace_member_user_id_fkey'),
|
||||
PrimaryKeyConstraint('id', name='workspace_member_pk')
|
||||
)
|
||||
|
||||
id: Mapped[uuid.UUID] = mapped_column(Uuid, primary_key=True, default=uuid.uuid4)
|
||||
user_id: Mapped[uuid.UUID] = mapped_column(Uuid, nullable=False)
|
||||
slack_user_id: Mapped[Optional[str]] = mapped_column(String(32))
|
||||
role: Mapped[str] = mapped_column(Enum('OWNER', 'MEMBER', 'GUEST', name='user_role'), nullable=False, server_default=text("'GUEST'::user_role"))
|
||||
is_active: Mapped[Optional[bool]] = mapped_column(Boolean)
|
||||
joined_at: Mapped[Optional[datetime.datetime]] = mapped_column(DateTime, server_default=func.now())
|
||||
updated_at: Mapped[Optional[datetime.datetime]] = mapped_column(DateTime, server_default=func.now())
|
||||
|
||||
user: Mapped['User'] = relationship('User', back_populates='workspace_member')
|
||||
Loading…
x
Reference in New Issue
Block a user