meyakovenkoj/sup-project

Создание схемы бд

Closed this issue · 12 comments

Мы будем работать с монго, стоит поизучать как она устроена и что туда можно писать. Сделать схему в целом это значит проверить uml диаграмму и описать каждый класс

Как я и думал, там используется JSON-schema, а именно, её расширение

Про типы, которые можно указывать, вот тут.

Ну и в целом, читаем в гугле, делаем объекты под классы

Дополню, что в класс таски добавится 2 поля (относительно текущей диаграммы в моделио, обновлю позже), указанные в таске #27

  • тип задачи - enum

  • компонент системы (это такая часть проекта) - пока хз, можно наверное строку просто оставить, не хочется создавать новую сущность (но надо будет следить за значением в самом приложении)

компонент системы решили убрать

Просьба перевести схему на английский @Bigwarboss

На бэке уже используются такие поля

User
    {
        name:"Админ",
        surname: "Админов",
        username: "admin",
        password_hash: "",
        projects: [],
        is_admin: true
    },
Project
    {
        title:"SUP1",
        head: null,
        created: "2022-12-02",
        participants: [],
        tasks: [],
        status: "open"
    },

для Енамов задал

class RoleEnum(IntEnum):
    head = 1
    worker = 2


class ProjectStatus(IntEnum):
    open = 1
    closed = 2
    archived = 3


class TaskType(IntEnum):
    bug = 1
    task = 2
    feature = 3
    story = 4


class TaskStatus(IntEnum):
    new = 1
    open = 2
    reopened = 3
    ready = 4
    verification = 5
    closed = 6
    correction = 7

ну и в целом классы уже прописаны, а именно их имена полей и используются (кроме id - там в классах чутка другие - в базе именно _id, ну и вместо объекта в объекте почти везде будет просто соответствующий id)

User 
        self.user_id: ObjectId = id_obj
        self.name: str = name
        self.surname: str = surname
        self.username: str = username
        self.password_hash: str = password_hash
        self.projects: typing.List["Project"] = projects
        self.is_admin: bool = is_admin
        
Project
        self.project_id: ObjectId = id_obj
        self.title: str = title
        self.head: typing.Optional["ProjectParticipant"] = head
        self.created: date = created
        self.participants: typing.List["ProjectParticipant"] = participants
        self.tasks: typing.List["Task"] = tasks
        self.status: consts.ProjectStatus = status

ProjectParticipant
        self.pp_id: ObjectId = id_obj
        self.role: consts.RoleEnum = role
        self.user: User = user
        self.project: Project = project
        self.subscriptions: typing.List["TaskSubscriber"] = subscriptions

Task
        self.task_id: ObjectId = id_obj
        self.title: str = title
        self.author: ProjectParticipant = author
        self.created: datetime = created
        self.changed: typing.Optional[datetime] = changed
        self.executor: typing.Optional[ProjectParticipant] = executor
        self.accepted: typing.Optional[datetime] = accepted
        self.description: str = description
        self.checker: typing.Optional[ProjectParticipant] = checker
        self.status: consts.TaskStatus = status
        self.subscribers: typing.List["TaskSubscriber"] = subscribers
        self.project: Project = project
        self.comments: typing.List["Comment"] = comments
        self.files: typing.List[str] = files
        self.task_type: consts.TaskType = task_type

TaskSubscriber
        self.ts_id: ObjectId = id_obj
        self.task: Task = task
        self.subscriber: ProjectParticipant = subscriber

Comment
        self.comment_id: ObjectId = id_obj
        self.text: str = text
        self.author: User = author
        self.created: datetime = created
        self.edited: typing.Optional[datetime] = edited

там, где typing.Optional тайп хинт - значит может быть null или можно написать поле не в required - просто на уровне воркера это обработаю правильно

@DyadyaRodya так нужен перевод?

@DyadyaRodya так нужен перевод?

По сути, я дал перевод, просто надо это в схеме поправить

Создал пулл-реквест

я в #38 отписал

Вроде исправил