2020-11-16 14:23:59 +00:00
|
|
|
import {DbApiService} from '../service/db-api.service';
|
|
|
|
|
|
|
|
let privDbApi!: DbApiService;
|
|
|
|
export function _setDbApi(dbApi: DbApiService) {
|
|
|
|
privDbApi = dbApi;
|
|
|
|
}
|
|
|
|
|
|
|
|
export function _getDbApi(): DbApiService {
|
|
|
|
return privDbApi;
|
|
|
|
}
|
|
|
|
|
|
|
|
export class Database {
|
|
|
|
public name!: string;
|
|
|
|
public uuid!: string;
|
|
|
|
public pageId!: string;
|
|
|
|
public columnIds: string[] = [];
|
|
|
|
public versionNum?: number;
|
|
|
|
|
|
|
|
static async all() {
|
|
|
|
return _getDbApi().getDatabases();
|
|
|
|
}
|
|
|
|
|
|
|
|
static async one(databaseId: string) {
|
|
|
|
return _getDbApi().getDatabase(databaseId);
|
|
|
|
}
|
|
|
|
|
|
|
|
constructor(record?: any) {
|
|
|
|
if ( record ) {
|
|
|
|
this.loadFrom(record);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
loadFrom(record: any) {
|
|
|
|
this.name = record.name;
|
|
|
|
this.uuid = record.uuid;
|
|
|
|
this.pageId = record.page_id;
|
|
|
|
this.columnIds = record.column_ids;
|
|
|
|
|
|
|
|
if ( record.version_num ) {
|
|
|
|
this.versionNum = record.version_num;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
async columns() {
|
|
|
|
const order = await this.columnOrder();
|
|
|
|
const columns = await _getDbApi().getColumns(this.uuid);
|
|
|
|
|
|
|
|
return order.map(x => columns.find(col => col.uuid === x));
|
|
|
|
}
|
|
|
|
|
|
|
|
async columnOrder() {
|
|
|
|
return _getDbApi().getColumnOrder(this.uuid);
|
|
|
|
}
|
|
|
|
|
|
|
|
async data() {
|
|
|
|
return _getDbApi().getData(this.uuid);
|
|
|
|
}
|
|
|
|
|
|
|
|
async record(id: string) {
|
|
|
|
return _getDbApi().getDataRecord(this.uuid, id);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
export class DatabaseColumn {
|
|
|
|
public name!: string;
|
|
|
|
public databaseId!: string;
|
|
|
|
public uuid!: string;
|
|
|
|
public type!: string;
|
2020-11-17 04:48:59 +00:00
|
|
|
public field!: string;
|
2020-11-16 14:23:59 +00:00
|
|
|
public metadata: any;
|
|
|
|
|
|
|
|
constructor(record?: any) {
|
|
|
|
if ( record ) {
|
|
|
|
this.loadFrom(record);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
loadFrom(record: any) {
|
|
|
|
this.name = record.name;
|
|
|
|
this.databaseId = record.database_id;
|
|
|
|
this.uuid = record.uuid;
|
|
|
|
this.type = record.type;
|
2020-11-17 04:48:59 +00:00
|
|
|
this.field = record.field;
|
2020-11-16 14:23:59 +00:00
|
|
|
this.metadata = record.metadata;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
export class DatabaseRecord {
|
|
|
|
public data: any = {};
|
|
|
|
public uuid!: string;
|
|
|
|
public databaseId!: string;
|
|
|
|
|
|
|
|
constructor(record?: any) {
|
|
|
|
if ( record ) {
|
|
|
|
this.loadFrom(record);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
loadFrom(record: any) {
|
|
|
|
this.data = record.data;
|
|
|
|
this.uuid = record.uuid;
|
|
|
|
this.databaseId = record.database_id;
|
|
|
|
}
|
|
|
|
}
|