diff options
author | IRONM00N <64110067+IRONM00N@users.noreply.github.com> | 2021-12-27 13:13:10 -0500 |
---|---|---|
committer | IRONM00N <64110067+IRONM00N@users.noreply.github.com> | 2021-12-27 13:13:10 -0500 |
commit | 0fa1b2d2a327151f3c9a5c2e28880cf537853302 (patch) | |
tree | 930207facabf2074e4472846b45368412ce0c9ba /src/lib/models | |
parent | e05f25f4b98cac3c2409cee9a664ab5ea6251467 (diff) | |
download | tanzanite-0fa1b2d2a327151f3c9a5c2e28880cf537853302.tar.gz tanzanite-0fa1b2d2a327151f3c9a5c2e28880cf537853302.tar.bz2 tanzanite-0fa1b2d2a327151f3c9a5c2e28880cf537853302.zip |
remind command
Diffstat (limited to 'src/lib/models')
-rw-r--r-- | src/lib/models/Reminder.ts | 77 |
1 files changed, 77 insertions, 0 deletions
diff --git a/src/lib/models/Reminder.ts b/src/lib/models/Reminder.ts new file mode 100644 index 0000000..b8cd669 --- /dev/null +++ b/src/lib/models/Reminder.ts @@ -0,0 +1,77 @@ +import { Snowflake } from 'discord.js'; +import { nanoid } from 'nanoid'; +import { type Sequelize } from 'sequelize'; +import { BaseModel } from './BaseModel.js'; +const { DataTypes } = (await import('sequelize')).default; + +export interface ReminderModel { + id: string; + user: Snowflake; + messageUrl: string; + content: string; + created: Date; + expires: Date; + notified: boolean; +} + +export interface ReminderModelCreationAttributes { + id?: string; + user: Snowflake; + messageUrl: string; + content: string; + created: Date; + expires: Date; + notified?: boolean; +} + +export class Reminder extends BaseModel<ReminderModel, ReminderModelCreationAttributes> implements ReminderModel { + /** + * The id of the reminder. + */ + public declare id: string; + + /** + * The user that the reminder is for. + */ + public declare user: Snowflake; + + /** + * The url of the message where the reminder was created. + */ + public declare messageUrl: string; + + /** + * The content of the reminder. + */ + public declare content: string; + + /** + * The date the reminder was created. + */ + public declare created: Date; + + /** + * The date when the reminder expires. + */ + public declare expires: Date; + + /** + * Whether the user has been notified about the reminder. + */ + public declare notified: boolean; + + public static initModel(sequelize: Sequelize): void { + Reminder.init( + { + id: { type: DataTypes.STRING, primaryKey: true, defaultValue: nanoid }, + user: { type: DataTypes.STRING, allowNull: false }, + messageUrl: { type: DataTypes.STRING, allowNull: false }, + content: { type: DataTypes.TEXT, allowNull: false }, + created: { type: DataTypes.DATE, allowNull: false }, + expires: { type: DataTypes.DATE, allowNull: false }, + notified: { type: DataTypes.BOOLEAN, allowNull: false, defaultValue: false } + }, + { sequelize } + ); + } +} |