ivanovna.orm/src/app/storage.ts
2021-09-30 17:29:28 +03:00

39 lines
1.1 KiB
TypeScript

/** @public */
export interface StorageCursor {
limit(number_: number): StorageCursor
sort(parameters: Record<string, any>): StorageCursor
skip(offset: number): StorageCursor
toArray(): Promise<any[]>
}
/** @public */
export class ErrStorage extends Error {}
/** @public */
export class ErrNoSession extends ErrStorage {}
/** @public */
export abstract class Storage {
protected _dsn: string
constructor(dsn: string) {
this._dsn = dsn
}
abstract find(name: string, query: Record<string, any>): Promise<StorageCursor>
abstract save(name: string, uniqKey: string, data: Record<string, any>): Promise<string>
abstract createSession(): StorageSession
abstract count(name: string, query?: Record<string, any>): Promise<number>
abstract remove(collectionName: string, uniqKeyName: string, uniqKey: string): Promise<boolean>
}
/** @public */
export abstract class StorageSession {
abstract start(options?: Record<string, any>): Promise<void>
abstract commit(fn: () => any, options?: Record<string, any>): Promise<void>
}