event-local
Version:
Event client
53 lines (49 loc) • 2.2 kB
text/typescript
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;
}
}