core/orm/draft.py

42 lines
1.5 KiB
Python
Raw Normal View History

2023-01-13 11:04:45 +00:00
from datetime import datetime
2023-01-16 08:32:36 +00:00
from sqlalchemy import Boolean, Column, ForeignKey, DateTime, String
2023-01-13 11:04:45 +00:00
from sqlalchemy.orm import relationship
from base.orm import Base
from orm.user import User
2023-01-16 08:32:36 +00:00
from orm.topic import Topic
class DraftTopic(Base):
__tablename__ = "draft_topic"
id = None # type: ignore
collab = Column(ForeignKey("draft_collab.id"), primary_key=True)
topic = Column(ForeignKey("topic.id"), primary_key=True)
2023-02-17 14:30:38 +00:00
main = Column(Boolean, default=False)
2023-01-13 11:04:45 +00:00
class DraftAuthor(Base):
2023-01-16 08:32:36 +00:00
__tablename__ = "draft_author"
2023-01-13 11:04:45 +00:00
id = None # type: ignore
2023-01-16 08:32:36 +00:00
collab = Column(ForeignKey("draft_collab.id"), primary_key=True)
2023-01-13 11:04:45 +00:00
author = Column(ForeignKey("user.id"), primary_key=True)
2023-01-16 08:32:36 +00:00
accepted = Column(Boolean, default=False)
2023-01-13 11:04:45 +00:00
class DraftCollab(Base):
2023-01-16 08:32:36 +00:00
__tablename__ = "draft_collab"
2023-01-13 11:04:45 +00:00
slug = Column(String, nullable=True, comment="Slug")
title = Column(String, nullable=True, comment="Title")
subtitle = Column(String, nullable=True, comment="Subtitle")
layout = Column(String, nullable=True, comment="Layout format")
body = Column(String, nullable=True, comment="Body")
cover = Column(String, nullable=True, comment="Cover")
authors = relationship(lambda: User, secondary=DraftAuthor.__tablename__)
2023-01-16 08:32:36 +00:00
topics = relationship(lambda: Topic, secondary=DraftTopic.__tablename__)
2023-01-13 11:04:45 +00:00
createdAt = Column(DateTime, default=datetime.now, comment="Created At")
updatedAt = Column(DateTime, default=datetime.now, comment="Updated At")
chat = Column(String, unique=True, nullable=True)