UNPKG

event-local

Version:

Event client

53 lines (49 loc) 2.2 kB
import MySQLAsyncAdapter from "mysql-async-adapter"; export default class MySQLModule { private mysql: MySQLAsyncAdapter; public static db: MySQLAsyncAdapter; async onInit() { this.mysql = await new MySQLAsyncAdapter({ host: "127.0.0.1", user: "root", password: "Saq33rrT", database: "sys" }).connect(); const res = await this.mysql.query( "CREATE DATABASE IF NOT EXISTS aux_events;" ); const res2 = await this.mysql.query("use aux_events;"); // Хранилище событий const res3 = await this.mysql.query(`create table if not exists events ( event_id bigint(255) UNSIGNED NOT NULL, event_type varchar(1000), event_data varchar(1000) NOT NULL, entity_type VARCHAR(1000) NOT NULL, entity_id varchar(1000) NOT NULL, triggering_event VARCHAR(1000), create_at timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP );`); if (res3["warningCount"] == 0) await this.mysql.query( "ALTER TABLE `events` ADD PRIMARY KEY (`event_id`)" ); // Хранилище сущностей (1 строка 1 сущность) const res4 = await this.mysql.query(`create table if not exists entities ( entity_type VARCHAR(1000), entity_id VARCHAR(1000), entity_version VARCHAR(1000) NOT NULL, PRIMARY KEY(entity_type, entity_id) );`); // хранилище снимков const res5 = await this.mysql.query(`create table if not exists snapshots ( entity_type VARCHAR(1000), entity_id VARCHAR(1000), entity_version VARCHAR(1000), snapshot_type VARCHAR(1000) NOT NULL, snapshot_json VARCHAR(1000) NOT NULL, triggering_events VARCHAR(1000), PRIMARY KEY (entity_type, entity_id, entity_version) );`); MySQLModule.db = this.mysql; } }