jsonjsdb
Version:
58 lines (57 loc) • 2.64 kB
TypeScript
import { default as DBrowser } from './DBrowser';
import { default as Loader } from './Loader';
import { default as IntegrityChecker } from './IntegrityChecker';
import { JsonjsdbConfig, PartialJsonjsdbConfig, IntegrityResult, Schema, DatabaseMetadata, DatabaseRow, TableCollection } from './types';
type InitOption = {
filter?: {
entity?: string;
variable?: string;
values?: string[];
};
aliases?: Array<{
table: string;
alias: string;
}>;
useCache?: boolean;
version?: number | string;
limit?: number;
validIdChars?: string;
};
type ForeignTableObj = {
[tableName: string]: string | number | {
id: string | number;
} | undefined;
};
export default class Jsonjsdb<TEntityTypeMap extends Record<string, DatabaseRow> = Record<string, DatabaseRow>> {
defaultConfig: JsonjsdbConfig;
config: JsonjsdbConfig;
browser: DBrowser;
loader: Loader;
integrityChecker: IntegrityChecker;
tables: TableCollection<TEntityTypeMap>;
metadata: DatabaseMetadata;
private idSuffix;
private usageCache;
private recursiveUsageCache;
constructor(config?: string | PartialJsonjsdbConfig);
private getHtmlConfig;
private setConfig;
init(option?: InitOption): Promise<Jsonjsdb<TEntityTypeMap>>;
load(filePath: string, name: string, shouldStandardizeIds?: boolean): Promise<unknown[]>;
get<K extends keyof TEntityTypeMap>(table: K & string, id: string | number): TEntityTypeMap[K] | undefined;
getAll<K extends keyof TEntityTypeMap>(table: K & string, foreignTableObj?: ForeignTableObj, option?: InitOption): TEntityTypeMap[K][];
getAllChilds<K extends keyof TEntityTypeMap>(table: K & string, itemId: string | number): TEntityTypeMap[K][];
foreach<K extends keyof TEntityTypeMap>(table: K & string, callback: (row: TEntityTypeMap[K]) => void): void;
exists<K extends keyof TEntityTypeMap>(table: K & string, id: string | number): boolean;
getConfig(id: string | number): string | number | undefined;
countRelated<K extends keyof TEntityTypeMap>(table: K & string, id: string | number, relatedTable: string): number;
getParents<K extends keyof TEntityTypeMap>(from: K & string, id: string | number): TEntityTypeMap[K][];
addMeta(userData?: Record<string, unknown>, dbSchema?: string[][]): void;
getLastModifTimestamp(): number;
get use(): Partial<Record<keyof TEntityTypeMap, boolean>>;
get useRecursive(): Partial<Record<keyof TEntityTypeMap, boolean>>;
private computeUsage;
getSchema(): Schema;
checkIntegrity(): Promise<IntegrityResult>;
}
export {};