import { Client, ClientConfig } from "../deps.ts";import { BaseModel } from "./model.ts";import { sync } from "./sync.ts";import { Transaction } from "./transaction.ts";
let _client: Client;
let _models: BaseModel[] = [];
export const dso = { showQueryLog: false,
async sync(force: boolean = false): Promise<void> { for (const model of _models) { await sync(_client, model, force); } },
get client(): Client { return _client; },
get models() { return _models; },
define<T extends BaseModel>(ModelClass: { new (): T }): T { const model = new ModelClass(); _models.push(model); return model; },
transaction: Transaction.transaction,
async connect(config: ClientConfig | Client) { if (config instanceof Client) { _client = config; } else { _client = new Client(); await _client.connect(config); } return _client; },
close(): void { _client.close(); },};