76 lines
2.0 KiB
JavaScript
76 lines
2.0 KiB
JavaScript
import Sequelize from 'sequelize';
|
|
|
|
import {Logger} from '../logger';
|
|
import {Config} from '../../config/config';
|
|
|
|
let connection;
|
|
|
|
let user;
|
|
let auth;
|
|
let session;
|
|
|
|
export class BaseDatabase {
|
|
static get Connection() {return connection;}
|
|
|
|
static async init() {
|
|
Logger.info('Connecting to SQLite Database');
|
|
|
|
connection = new Sequelize('database', 'user', 'password', {
|
|
host: 'localhost',
|
|
dialect: 'sqlite',
|
|
logging: Logger.database,
|
|
operatorsAliases: false,
|
|
storage: 'src/models/database/sqlite/database.sqlite',
|
|
});
|
|
|
|
user = connection.define('user', {
|
|
id: {
|
|
type: Sequelize.BIGINT,
|
|
primaryKey: true,
|
|
unique: true
|
|
},
|
|
username: Sequelize.TEXT,
|
|
password: Sequelize.TEXT,
|
|
email: Sequelize.TEXT,
|
|
ip: Sequelize.TEXT,
|
|
lastupdated: Sequelize.TEXT,
|
|
verified: Sequelize.BOOLEAN,
|
|
authcode: Sequelize.STRING,
|
|
timeauthed: Sequelize.TEXT
|
|
});
|
|
|
|
auth = connection.define('auth', {
|
|
id: {
|
|
type: Sequelize.BIGINT,
|
|
primaryKey: true,
|
|
unique: true
|
|
},
|
|
selector: Sequelize.TEXT,
|
|
validator: Sequelize.TEXT,
|
|
uid: Sequelize.BIGINT,
|
|
expires: Sequelize.TEXT
|
|
});
|
|
|
|
session = connection.define('session', {
|
|
sessionid: {
|
|
type: Sequelize.BIGINT,
|
|
primaryKey: true,
|
|
unique: true
|
|
},
|
|
sessiondata: Sequelize.TEXT,
|
|
timecreated: Sequelize.TEXT,
|
|
timeupdated: Sequelize.TEXT
|
|
});
|
|
try {
|
|
await connection.sync();
|
|
} catch (e) {
|
|
Logger.panic('Failed to connect to SQLite Database, error:', e)
|
|
}
|
|
Logger.info('Connected to SQLite Database');
|
|
}
|
|
|
|
static async testConnection() {
|
|
|
|
}
|
|
}
|