72 lines
1.6 KiB
TypeScript
72 lines
1.6 KiB
TypeScript
import {
|
|
BOOLEAN,
|
|
DATE,
|
|
INTEGER,
|
|
Model,
|
|
type Sequelize,
|
|
STRING,
|
|
} from 'sequelize';
|
|
|
|
export class Nag extends Model {
|
|
// Primary key
|
|
declare id: number;
|
|
// User who created this nag
|
|
declare userId: string;
|
|
// Guild (server) of original nag request
|
|
declare guildId: string;
|
|
// Channel of original nag request
|
|
declare channelId: string;
|
|
// Message of original nag request
|
|
declare messageId: string;
|
|
// Description of what you're supposed to do
|
|
declare text: string;
|
|
// Custom failure text
|
|
declare failText?: string;
|
|
// Should we @here?
|
|
declare mentionHere?: boolean;
|
|
}
|
|
|
|
export class CheckIn extends Model {
|
|
// Date of the last time user ran /checkin
|
|
declare lastCheckIn: Date;
|
|
}
|
|
|
|
export async function initializeModels(sequelize: Sequelize) {
|
|
Nag.init(
|
|
{
|
|
id: {
|
|
primaryKey: true,
|
|
type: INTEGER,
|
|
autoIncrement: true,
|
|
},
|
|
userId: {
|
|
type: STRING,
|
|
allowNull: false,
|
|
},
|
|
text: {
|
|
type: STRING,
|
|
allowNull: false,
|
|
},
|
|
failText: {
|
|
type: STRING,
|
|
},
|
|
mentionHere: {
|
|
type: BOOLEAN,
|
|
},
|
|
},
|
|
{sequelize},
|
|
);
|
|
CheckIn.init(
|
|
{
|
|
lastCheckIn: {
|
|
type: DATE,
|
|
allowNull: false,
|
|
},
|
|
},
|
|
{sequelize},
|
|
);
|
|
Nag.hasMany(CheckIn);
|
|
CheckIn.belongsTo(Nag);
|
|
await Nag.sync();
|
|
await CheckIn.sync();
|
|
} |