84 lines
2.2 KiB
JavaScript
84 lines
2.2 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 get User() {return User}
|
|
static get Auth() {return Auth}
|
|
static get Session() {return Session}
|
|
|
|
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.TEXT,
|
|
timeauthed: Sequelize.TEXT
|
|
}, {
|
|
tableName: `user`
|
|
});
|
|
|
|
Auth = connection.define('auth', {
|
|
id: {
|
|
type: Sequelize.BIGINT,
|
|
primaryKey: true,
|
|
unique: true
|
|
},
|
|
token: Sequelize.TEXT,
|
|
passhash: Sequelize.TEXT
|
|
}, {
|
|
tableName: `auth`
|
|
});
|
|
|
|
Session = connection.define('session', {
|
|
sessionid: {
|
|
type: Sequelize.BIGINT,
|
|
primaryKey: true,
|
|
unique: true
|
|
},
|
|
sessiondata: Sequelize.TEXT,
|
|
timecreated: Sequelize.TEXT,
|
|
timeupdated: Sequelize.TEXT
|
|
}, {
|
|
tableName: `session`
|
|
});
|
|
|
|
try {
|
|
await connection.sync({force: false});
|
|
} catch (e) {
|
|
Logger.panic('Failed to connect to SQLite Database, error:', e)
|
|
}
|
|
Logger.info('Connected to SQLite Database');
|
|
}
|
|
|
|
static async testConnection() {
|
|
|
|
}
|
|
}
|