Closed meyakovenkoj closed 1 year ago
Как я и думал, там используется JSON-schema, а именно, её расширение
Про типы, которые можно указывать, вот тут.
Ну и в целом, читаем в гугле, делаем объекты под классы
Дополню, что в класс таски добавится 2 поля (относительно текущей диаграммы в моделио, обновлю позже), указанные в таске https://github.com/meyakovenkoj/sup-project/issues/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 так нужен перевод?
По сути, я дал перевод, просто надо это в схеме поправить
Создал пулл-реквест
Вроде исправил
Мы будем работать с монго, стоит поизучать как она устроена и что туда можно писать. Сделать схему в целом это значит проверить uml диаграмму и описать каждый класс