import { Task, TaskID } from './task'; import { Params, defaults } from "./params"; import { uuidV4 } from "../util/uuid"; export type ProjectID = string; export interface Project { id: ProjectID label: string description: string tasks: Tasks params: Params createdAt: Date updatedAt: Date ordering: TaskID[] } export interface Tasks { [id: string]: Task } export function newProject(id?: string): Project { return { id: id ? id : uuidV4(), label: "", description: "", tasks: {}, params: { ...defaults }, createdAt: new Date(), updatedAt: new Date(), ordering: [], }; } export function sanitize(project: Project): Project { if (!Array.isArray(project.ordering)) { project.ordering = Object.keys(project.tasks) } if (typeof project.updatedAt === 'string') { project.updatedAt = new Date(project.updatedAt) } if (typeof project.createdAt === 'string') { project.createdAt = new Date(project.createdAt) } return project }