import { TimerInterface } from '@standardnotes/time' import { ProjectorInterface } from './ProjectorInterface' import { Item } from '../Domain/Item/Item' import { ItemProjection } from './ItemProjection' import { ItemProjectionWithUser } from './ItemProjectionWithUser' export class ItemProjector implements ProjectorInterface { constructor(private timer: TimerInterface) {} async projectSimple(_item: Item): Promise { throw Error('not implemented') } async projectCustom(_projectionType: string, item: Item): Promise { const fullProjection = await this.projectFull(item) return { ...fullProjection, user_uuid: item.userUuid, } } async projectFull(item: Item): Promise { return { uuid: item.uuid, items_key_id: item.itemsKeyId, duplicate_of: item.duplicateOf, enc_item_key: item.encItemKey, content: item.content, content_type: item.contentType as string, auth_hash: item.authHash, deleted: !!item.deleted, created_at: this.timer.convertMicrosecondsToStringDate(item.createdAtTimestamp), created_at_timestamp: item.createdAtTimestamp, updated_at: this.timer.convertMicrosecondsToStringDate(item.updatedAtTimestamp), updated_at_timestamp: item.updatedAtTimestamp, updated_with_session: item.updatedWithSession, } } }