meyakovenkoj / sup-project

Система управления проектами
MIT License
1 stars 0 forks source link

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

Closed meyakovenkoj closed 1 year ago

meyakovenkoj commented 1 year ago

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

DyadyaRodya commented 1 year ago

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

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

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

DyadyaRodya commented 1 year ago

Дополню, что в класс таски добавится 2 поля (относительно текущей диаграммы в моделио, обновлю позже), указанные в таске https://github.com/meyakovenkoj/sup-project/issues/27

DyadyaRodya commented 1 year ago

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

meyakovenkoj commented 1 year ago

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

DyadyaRodya commented 1 year ago

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

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
DyadyaRodya commented 1 year ago

ну и в целом классы уже прописаны, а именно их имена полей и используются (кроме 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
DyadyaRodya commented 1 year ago

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

meyakovenkoj commented 1 year ago

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

DyadyaRodya commented 1 year ago

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

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

Bigwarboss commented 1 year ago

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

DyadyaRodya commented 1 year ago

я в https://github.com/meyakovenkoj/sup-project/pull/38 отписал

Bigwarboss commented 1 year ago

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