Запис пројекта је идентичан запис угњежденог пројекта и ова два записа у суштини никада неће имати различите могућности. Предлажем у бази имамо само једну табелу под називом projects са следећим колонама.
Колона
Тип
Коментар
id
UUID
Примарни јединствени кључ и идентификатор пројекта.
parent_project_id
Nullable(UUID)
Показивач ка родитељском пројекту
name
varchar(255)
Назив пројекта који не мора бити јединствен
description
Nullable(text)
Опис пројекта
На овај начин, структура би подржавала неограничен број угњеждавања пројеката, па можемо имати
Рецепти
│
└───Ручак
│
└───Супе
Дакле, веза између пројеката је 1 - N (један пројекат може припадати само једном пројекту, а може их имати неограничено много)
API
Што се самих путања тиче, све путање везане за угњеждене пројекте (subproject) бих уклонио, а приступ подацима бих организовао путем следећих путања
Путања
Параметар
Опис
Коментар
[GET]/projects
Добављање свих пројеката без parent_project_id
у одговор укључити само обавезна поља, односно она која не могу бити празна-null
DB
Запис пројекта је идентичан запис угњежденог пројекта и ова два записа у суштини никада неће имати различите могућности. Предлажем у бази имамо само једну табелу под називом
projects
са следећим колонама.id
UUID
parent_project_id
Nullable(UUID)
name
varchar(255)
description
Nullable(text)
На овај начин, структура би подржавала неограничен број угњеждавања пројеката, па можемо имати
Дакле, веза између пројеката је 1 - N (један пројекат може припадати само једном пројекту, а може их имати неограничено много)
API
Што се самих путања тиче, све путање везане за угњеждене пројекте (
subproject
) бих уклонио, а приступ подацима бих организовао путем следећих путања[GET]
/projects
parent_project_id
fields=id,name
attributes
укључити само наведена пољаfields[projects]=id,name
include=projects
parent_project_id
Одговор сервера
[GET]
/projects/:id
id
одговара примљеномfields=name,description
attributes
укључити само наведена пољаfields[projects]=id,name
include=projects
Одговор сервера