import { SchemaDef , Relationship , RDBType } from '../db' ; import { schemaColl } from './schemas' ; import { ExecutorOrCreator , ObjectLinkId , UserId , DetailObjectId } from 'teambition-types' ; export type ParentType = 'task' | 'post' | 'event' | 'work' | 'collection' | 'entry' ; export interface ObjectLinkSchema { _id : ObjectLinkId ; _creatorId : UserId ; _parentId : DetailObjectId ; parentType : ParentType ; parent : any ; _linkedId : DetailObjectId ; linkedType : ParentType ; linked : any ; created : string ; creator : ExecutorOrCreator ; title : string ; data : any ; } const schema = { _creatorId : { type : RDBType . STRING } , _id : { type : RDBType . STRING , primaryKey : true } , _linkedId : { type : RDBType . STRING } , _parentId : { type : RDBType . STRING } , created : { type : RDBType . DATE_TIME } , creator : { type : Relationship . oneToOne , virtual : { name : 'User' , where : ( userTable ) => ( { _creatorId : userTable . _id } ) } } , data : { type : RDBType . OBJECT } , linked : { type : RDBType . OBJECT } , linkedType : { type : RDBType . STRING } , parent : { type : RDBType . OBJECT } , parentType : { type : RDBType . STRING } , title : { type : RDBType . STRING } } ; schemaColl . add ( { schema , name : 'ObjectLink' } ) ;