import { Association, DataTypes, Model, ModelDefined, Optional, Sequelize, InferAttributes, InferCreationAttributes, CreationOptional, NonAttribute, ForeignKey, HasManyAddAssociationMixin, HasManyCountAssociationsMixin, HasManyCreateAssociationMixin, HasManyGetAssociationsMixin, HasManyHasAssociationMixin, HasManySetAssociationsMixin, HasManyAddAssociationsMixin, HasManyHasAssociationsMixin, HasManyRemoveAssociationMixin, HasManyRemoveAssociationsMixin, HasOneGetAssociationMixin, HasOneSetAssociationMixin, HasOneCreateAssociationMixin, } from 'sequelize'; import { APIKey } from '../apikey/apikey-model'; export class User extends Model, InferCreationAttributes> { declare id: CreationOptional; declare username: string; declare mail?: string; declare getPassword: HasOneGetAssociationMixin; // Note the null assertions! declare setPassword: HasOneSetAssociationMixin; declare createPassword: HasOneCreateAssociationMixin; declare getAccessRules: HasManyGetAssociationsMixin; // Note the null assertions! declare addAccessRule: HasManyAddAssociationMixin; declare addAccessRules: HasManyAddAssociationsMixin; declare setAccessRules: HasManySetAssociationsMixin; declare removeAccessRule: HasManyRemoveAssociationMixin; declare removeAccessRules: HasManyRemoveAssociationsMixin; declare hasAccessRule: HasManyHasAssociationMixin; declare hasAccessRules: HasManyHasAssociationsMixin; declare countAccessRules: HasManyCountAssociationsMixin; declare createAccessRule: HasManyCreateAssociationMixin; declare getAPIKeys: HasManyGetAssociationsMixin; // Note the null assertions! declare addAPIKey: HasManyAddAssociationMixin; declare addAPIKeys: HasManyAddAssociationsMixin; declare setAPIKeys: HasManySetAssociationsMixin; declare removeAPIKey: HasManyRemoveAssociationMixin; declare removeAPIKeys: HasManyRemoveAssociationsMixin; declare hasAPIKey: HasManyHasAssociationMixin; declare hasAPIKeys: HasManyHasAssociationsMixin; declare countAPIKeys: HasManyCountAssociationsMixin; declare createAPIKey: HasManyCreateAssociationMixin; // You can also pre-declare possible inclusions, these will only be populated if you // actively include a relation. declare apikeys?: NonAttribute; declare createdAt: CreationOptional; declare updatedAt: CreationOptional; } export class Password extends Model, InferCreationAttributes> { declare id: CreationOptional; declare password: string; declare salt: string; declare ownerId: ForeignKey; declare owner?: NonAttribute; declare createdAt: CreationOptional; declare updatedAt: CreationOptional; } export class AccessRule extends Model, InferCreationAttributes> { declare id: CreationOptional; declare grants: string; declare UserId: ForeignKey; declare User?: NonAttribute; declare createdAt: CreationOptional; declare updatedAt: CreationOptional; }