// // Copyright © 2020, 2021 Anticrm Platform Contributors. // // Licensed under the Eclipse Public License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. You may // obtain a copy of the License at https://www.eclipse.org/legal/epl-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // // See the License for the specific language governing permissions and // limitations under the License. // import type { IntlString } from '@anticrm/platform' import type { Account, AnyAttribute, AttachedDoc, Class, ClassifierKind, Doc, Domain, Mixin, Obj, Ref, Space, Timestamp, Type, Collection, RefTo } from '@anticrm/core' import { DOMAIN_MODEL } from '@anticrm/core' import { Model, Prop, TypeTimestamp } from '@anticrm/model' import core from './component' // C O R E @Model(core.class.Obj, core.class.Obj) export class TObj implements Obj { _class!: Ref> } @Model(core.class.Doc, core.class.Obj) export class TDoc extends TObj implements Doc { _id!: Ref space!: Ref @Prop(TypeTimestamp(), 'Modified On' as IntlString) modifiedOn!: Timestamp modifiedBy!: Ref } @Model(core.class.AttachedDoc, core.class.Doc) export class TAttachedDoc extends TDoc implements AttachedDoc { attachedTo!: Ref attachedToClass!: Ref> collection!: string } @Model(core.class.Class, core.class.Doc, DOMAIN_MODEL) export class TClass extends TDoc implements Class { kind!: ClassifierKind label!: IntlString extends!: Ref> domain!: Domain } @Model(core.class.Mixin, core.class.Class) export class TMixin extends TClass implements Mixin {} @Model(core.class.Attribute, core.class.Doc) export class TAttribute extends TDoc implements AnyAttribute { attributeOf!: Ref> name!: string type!: Type label!: IntlString } @Model(core.class.Type, core.class.Obj) export class TType extends TObj implements Type { label!: IntlString } @Model(core.class.TypeString, core.class.Type) export class TTypeString extends TType {} @Model(core.class.RefTo, core.class.Type) export class TRefTo extends TType implements RefTo { to!: Ref> } @Model(core.class.Collection, core.class.Type) export class TCollection extends TType implements Collection { of!: Ref> } @Model(core.class.TypeBoolean, core.class.Type) export class TTypeBoolean extends TType {} @Model(core.class.TypeTimestamp, core.class.Type) export class TTypeTimestamp extends TType {} @Model(core.class.TypeDate, core.class.Type) export class TTypeDate extends TType {}