fix data base

This commit is contained in:
2026-02-27 15:37:15 +05:00
parent 335db59c9c
commit d37c255994
27 changed files with 1372 additions and 11 deletions

16
bd/tables/choice.py Normal file
View File

@@ -0,0 +1,16 @@
from sqlalchemy import Column, String, Integer, ForeignKey
from sqlalchemy.dialects.postgresql import UUID
from .simple_base import Base
import uuid
class Choice(Base):
__tablename__ = "choices"
id = Column(UUID(as_uuid=True), primary_key=True, default=uuid.uuid4)
question_id = Column(UUID(as_uuid=True), ForeignKey("questions.id", ondelete="CASCADE"), nullable=False)
text = Column(String(500), nullable=False)
position = Column(Integer, nullable=True)
__all__ = ["Base", "Choice"]

17
bd/tables/group.py Normal file
View File

@@ -0,0 +1,17 @@
from sqlalchemy import Column, String, ForeignKey
from sqlalchemy.dialects.postgresql import UUID
from .simple_base import Base
import uuid
from sqlalchemy.orm import relationship
class Group(Base):
__tablename__ = "group"
id = Column(UUID(as_uuid=True), primary_key=True, default=uuid.uuid4)
name_group = Column(String(150), nullable=False)
user_id = Column(UUID(as_uuid=True), ForeignKey("users.id", ondelete="CASCADE"), nullable=False)
user = relationship("User", backref="groups", passive_deletes=True)
__all__ = ["Base", "Group"]

17
bd/tables/organization.py Normal file
View File

@@ -0,0 +1,17 @@
from sqlalchemy import Column, String, ForeignKey
from sqlalchemy.dialects.postgresql import UUID
from .simple_base import Base
import uuid
from sqlalchemy.orm import relationship
class Organization(Base):
__tablename__ = "organization"
id = Column(UUID(as_uuid=True), primary_key=True, default=uuid.uuid4)
name_organization = Column(String(150), nullable=False)
group_id = Column(UUID(as_uuid=True), ForeignKey("group.id", ondelete="CASCADE"), nullable=False)
group = relationship("Group", backref="organizations", passive_deletes=True)
__all__ = ["Base", "Organization"]

21
bd/tables/poll.py Normal file
View File

@@ -0,0 +1,21 @@
from sqlalchemy import Column, String, Boolean, DateTime, Text
from sqlalchemy.dialects.postgresql import UUID
from sqlalchemy.sql import func
from sqlalchemy.orm import relationship
from .simple_base import Base
import uuid
class Poll(Base):
__tablename__ = "polls"
id = Column(UUID(as_uuid=True), primary_key=True, default=uuid.uuid4)
title = Column(String(255), nullable=False)
description = Column(Text, nullable=True)
is_active = Column(Boolean, default=True, nullable=False)
created_at = Column(DateTime(timezone=True), server_default=func.now(), nullable=False)
questions = relationship("Question", backref="poll", cascade="all, delete-orphan", passive_deletes=True)
__all__ = ["Base", "Poll"]

20
bd/tables/question.py Normal file
View File

@@ -0,0 +1,20 @@
from sqlalchemy import Column, Text, Integer, ForeignKey, String
from sqlalchemy.dialects.postgresql import UUID
from sqlalchemy.orm import relationship
from .simple_base import Base
import uuid
class Question(Base):
__tablename__ = "questions"
id = Column(UUID(as_uuid=True), primary_key=True, default=uuid.uuid4)
poll_id = Column(UUID(as_uuid=True), ForeignKey("polls.id", ondelete="CASCADE"), nullable=False)
text = Column(Text, nullable=False)
position = Column(Integer, nullable=True)
type = Column(String(32), nullable=False, default="single") # single|multi|open
choices = relationship("Choice", backref="question", cascade="all, delete-orphan", passive_deletes=True)
__all__ = ["Base", "Question"]

30
bd/tables/response.py Normal file
View File

@@ -0,0 +1,30 @@
from sqlalchemy import Column, DateTime, ForeignKey, Text
from sqlalchemy.dialects.postgresql import UUID
from sqlalchemy.sql import func
from sqlalchemy.orm import relationship
from .simple_base import Base
import uuid
class Response(Base):
__tablename__ = "responses"
id = Column(UUID(as_uuid=True), primary_key=True, default=uuid.uuid4)
poll_id = Column(UUID(as_uuid=True), ForeignKey("polls.id"), nullable=False)
user_id = Column(UUID(as_uuid=True), nullable=True)
submitted_at = Column(DateTime(timezone=True), server_default=func.now(), nullable=False)
answers = relationship("Answer", backref="response", cascade="all, delete-orphan", passive_deletes=True)
class Answer(Base):
__tablename__ = "answers"
id = Column(UUID(as_uuid=True), primary_key=True, default=uuid.uuid4)
response_id = Column(UUID(as_uuid=True), ForeignKey("responses.id", ondelete="CASCADE"), nullable=False)
question_id = Column(UUID(as_uuid=True), ForeignKey("questions.id"), nullable=False)
choice_id = Column(UUID(as_uuid=True), nullable=True)
text = Column(Text, nullable=True)
__all__ = ["Base", "Response", "Answer"]

3
bd/tables/simple_base.py Normal file
View File

@@ -0,0 +1,3 @@
from sqlalchemy.orm import declarative_base
Base = declarative_base()

14
bd/tables/users.py Normal file
View File

@@ -0,0 +1,14 @@
from sqlalchemy import Column, String
from sqlalchemy.dialects.postgresql import UUID
from .simple_base import Base
import uuid
class User(Base):
__tablename__ = "users"
id = Column(UUID(as_uuid=True), primary_key=True, default=uuid.uuid4)
first_name = Column(String(150), nullable=False)
last_name = Column(String(150), nullable=False)
__all__ = ["Base", "User"]