67 lines
1.3 KiB
TypeScript
67 lines
1.3 KiB
TypeScript
import { DataTypes, Model } from "sequelize";
|
|
import sequelize from "../database/database";
|
|
|
|
interface SessionAttributes {
|
|
session_id: string;
|
|
user_id: string;
|
|
// needed in the ui to delete the session
|
|
id: string;
|
|
browser: string;
|
|
os: string;
|
|
last_used: Date;
|
|
expires: Date;
|
|
}
|
|
|
|
class Session extends Model<SessionAttributes> implements SessionAttributes {
|
|
declare session_id: string;
|
|
declare user_id: string;
|
|
declare id: string;
|
|
declare browser: string;
|
|
declare os: string;
|
|
declare last_used: Date;
|
|
declare expires: Date;
|
|
}
|
|
|
|
Session.init(
|
|
{
|
|
// Model attributes are defined here
|
|
session_id: {
|
|
primaryKey: true,
|
|
type: DataTypes.STRING,
|
|
allowNull: false,
|
|
},
|
|
user_id: {
|
|
type: DataTypes.STRING,
|
|
allowNull: false,
|
|
},
|
|
id: {
|
|
type: DataTypes.STRING,
|
|
allowNull: false,
|
|
},
|
|
browser: {
|
|
type: DataTypes.STRING,
|
|
allowNull: false,
|
|
},
|
|
os: {
|
|
type: DataTypes.STRING,
|
|
allowNull: false,
|
|
},
|
|
last_used: {
|
|
type: DataTypes.DATE,
|
|
allowNull: false,
|
|
},
|
|
expires: {
|
|
type: DataTypes.DATE,
|
|
allowNull: false,
|
|
},
|
|
},
|
|
{
|
|
tableName: "sessions",
|
|
sequelize, // passing the `sequelize` instance is required
|
|
createdAt: "created_at",
|
|
updatedAt: "updated_at",
|
|
}
|
|
);
|
|
|
|
export default Session;
|