import ModelComponent from "swaf/db/ModelComponent"; import User from "swaf/auth/models/User"; import {ManyModelRelation, OneModelRelation} from "swaf/db/ModelRelation"; import MailIdentity from "./MailIdentity"; import MailDomain from "./MailDomain"; import config from "config"; export default class UserMailIdentityComponent extends ModelComponent { public main_mail_identity_id?: number = undefined; public readonly mailIdentities: ManyModelRelation = new ManyModelRelation(this._model, MailIdentity, { localKey: 'id', foreignKey: 'user_id', }); public readonly publicMailIdentities: ManyModelRelation = this.mailIdentities.clone() .filter(async model => !!(await model.domain.get())?.isPublic()); public readonly mailDomains: ManyModelRelation = new ManyModelRelation(this._model, MailDomain, { localKey: 'id', foreignKey: 'user_id', }); public readonly mainMailIdentity: OneModelRelation = new OneModelRelation(this._model, MailIdentity, { foreignKey: 'id', localKey: 'main_mail_identity_id', }); public getMaxPublicAddressesCount(): number { return config.get('mail.max_public_identities_per_user'); } public async getPublicAddressesCount(): Promise { return (await this.publicMailIdentities.get()).length; } }