142 lines
2.8 KiB
JavaScript
142 lines
2.8 KiB
JavaScript
import { Model, DataTypes } from 'sequelize';
|
|
import { sequelize } from '../../../utils/sequelize.js';
|
|
|
|
class RelationshipState extends Model {}
|
|
|
|
RelationshipState.init(
|
|
{
|
|
relationshipId: {
|
|
type: DataTypes.INTEGER,
|
|
allowNull: false,
|
|
unique: true,
|
|
},
|
|
marriageSatisfaction: {
|
|
type: DataTypes.INTEGER,
|
|
allowNull: false,
|
|
defaultValue: 55,
|
|
validate: {
|
|
min: 0,
|
|
max: 100,
|
|
},
|
|
},
|
|
marriagePublicStability: {
|
|
type: DataTypes.INTEGER,
|
|
allowNull: false,
|
|
defaultValue: 55,
|
|
validate: {
|
|
min: 0,
|
|
max: 100,
|
|
},
|
|
},
|
|
loverRole: {
|
|
type: DataTypes.STRING,
|
|
allowNull: true,
|
|
validate: {
|
|
isIn: [[null, 'secret_affair', 'lover', 'mistress_or_favorite'].filter(Boolean)],
|
|
},
|
|
},
|
|
affection: {
|
|
type: DataTypes.INTEGER,
|
|
allowNull: false,
|
|
defaultValue: 50,
|
|
validate: {
|
|
min: 0,
|
|
max: 100,
|
|
},
|
|
},
|
|
visibility: {
|
|
type: DataTypes.INTEGER,
|
|
allowNull: false,
|
|
defaultValue: 15,
|
|
validate: {
|
|
min: 0,
|
|
max: 100,
|
|
},
|
|
},
|
|
discretion: {
|
|
type: DataTypes.INTEGER,
|
|
allowNull: false,
|
|
defaultValue: 50,
|
|
validate: {
|
|
min: 0,
|
|
max: 100,
|
|
},
|
|
},
|
|
maintenanceLevel: {
|
|
type: DataTypes.INTEGER,
|
|
allowNull: false,
|
|
defaultValue: 50,
|
|
validate: {
|
|
min: 0,
|
|
max: 100,
|
|
},
|
|
},
|
|
statusFit: {
|
|
type: DataTypes.INTEGER,
|
|
allowNull: false,
|
|
defaultValue: 0,
|
|
validate: {
|
|
min: -2,
|
|
max: 2,
|
|
},
|
|
},
|
|
monthlyBaseCost: {
|
|
type: DataTypes.INTEGER,
|
|
allowNull: false,
|
|
defaultValue: 0,
|
|
validate: {
|
|
min: 0,
|
|
},
|
|
},
|
|
monthsUnderfunded: {
|
|
type: DataTypes.INTEGER,
|
|
allowNull: false,
|
|
defaultValue: 0,
|
|
validate: {
|
|
min: 0,
|
|
},
|
|
},
|
|
active: {
|
|
type: DataTypes.BOOLEAN,
|
|
allowNull: false,
|
|
defaultValue: true,
|
|
},
|
|
acknowledged: {
|
|
type: DataTypes.BOOLEAN,
|
|
allowNull: false,
|
|
defaultValue: false,
|
|
},
|
|
exclusiveFlag: {
|
|
type: DataTypes.BOOLEAN,
|
|
allowNull: false,
|
|
defaultValue: false,
|
|
},
|
|
lastMonthlyProcessedAt: {
|
|
type: DataTypes.DATE,
|
|
allowNull: true,
|
|
},
|
|
lastDailyProcessedAt: {
|
|
type: DataTypes.DATE,
|
|
allowNull: true,
|
|
},
|
|
notesJson: {
|
|
type: DataTypes.JSONB,
|
|
allowNull: true,
|
|
},
|
|
flagsJson: {
|
|
type: DataTypes.JSONB,
|
|
allowNull: true,
|
|
},
|
|
},
|
|
{
|
|
sequelize,
|
|
modelName: 'RelationshipState',
|
|
tableName: 'relationship_state',
|
|
schema: 'falukant_data',
|
|
timestamps: true,
|
|
underscored: true,
|
|
}
|
|
);
|
|
|
|
export default RelationshipState;
|