src/app/core/database/database.ts
An implementation of this abstract class provides functions for direct database access. This interface is an extension of the PouchDB API.
PLEASE NOTE: Direct access to the Database layer is rarely necessary, and you should probably use EntityMapperService instead. Database is not an Angular Service and has to be accessed through the DatabaseResolverService.
Methods |
constructor(dbName: string)
|
||||||
Defined in src/app/core/database/database.ts:28
|
||||||
Parameters :
|
Abstract allDocs | ||||||||
allDocs(options?: GetAllOptions)
|
||||||||
Defined in src/app/core/database/database.ts:59
|
||||||||
Load all documents (matching the given PouchDB options) from the database. Normally you should rather use "getAll()" or another well typed method of this class instead of passing PouchDB specific options here because that will make your code tightly coupled with PouchDB rather than any other database provider.
Parameters :
Returns :
Promise<any>
|
Abstract changes |
changes()
|
Defined in src/app/core/database/database.ts:130
|
Returns :
Observable<DatabaseDocChange>
|
Abstract destroy |
destroy()
|
Defined in src/app/core/database/database.ts:128
|
Closes all open connections to the database base and destroys it (clearing all data)
Returns :
Promise<any>
|
Abstract get | ||||||||||||
get(id: string, options?: GetOptions)
|
||||||||||||
Defined in src/app/core/database/database.ts:48
|
||||||||||||
Load a single document by id from the database.
Parameters :
Returns :
Promise<any>
|
getAll | ||||||||||
getAll(prefix: string)
|
||||||||||
Defined in src/app/core/database/database.ts:106
|
||||||||||
Load all documents (with the given prefix) from the database.
Parameters :
Returns :
Promise<Array<any>>
|
Abstract init | ||||||||
init(dbName?: string)
|
||||||||
Defined in src/app/core/database/database.ts:36
|
||||||||
Initialize the database fully after its initial creation, e.g. once user details are available.
Parameters :
Returns :
any
|
Abstract isEmpty |
isEmpty()
|
Defined in src/app/core/database/database.ts:117
|
Returns :
Promise<boolean>
true if there are no documents in the database |
Abstract isInitialized |
isInitialized()
|
Defined in src/app/core/database/database.ts:41
|
Whether the database is already initialized and ready for use.
Returns :
boolean
|
Abstract put | ||||||||||||
put(object: any, forceUpdate?: boolean)
|
||||||||||||
Defined in src/app/core/database/database.ts:66
|
||||||||||||
Save a document to the database.
Parameters :
Returns :
Promise<any>
|
Abstract putAll | ||||||||||||
putAll(objects: any[], forceUpdate?: boolean)
|
||||||||||||
Defined in src/app/core/database/database.ts:74
|
||||||||||||
Save a bunch of documents at once to the database
Parameters :
Returns :
Promise<any[]>
array holding success responses or errors depending on the success of the operation |
Abstract query | ||||||||||||
query(fun: any, options?: QueryOptions)
|
||||||||||||
Defined in src/app/core/database/database.ts:91
|
||||||||||||
Query data from the database based on a more complex, indexed request. This is directly calling the PouchDB implementation of this function. Also see the documentation there: https://pouchdb.com/api.html#query_database
Parameters :
Returns :
Promise<any>
|
Abstract remove | ||||||||
remove(object: any)
|
||||||||
Defined in src/app/core/database/database.ts:80
|
||||||||
Delete a document from the database
Parameters :
Returns :
Promise<any>
|
Abstract reset |
reset()
|
Defined in src/app/core/database/database.ts:123
|
Closes open connections and un-initializes the database (without deleting persisted data, see destroy() for that)
Returns :
Promise<any>
|
Abstract saveDatabaseIndex | ||||||||
saveDatabaseIndex(designDoc: any)
|
||||||||
Defined in src/app/core/database/database.ts:100
|
||||||||
Create a database index to Also see the PouchDB documentation regarding indices and queries: https://pouchdb.com/api.html#query_database
Parameters :
Returns :
Promise<any>
|
import { Observable } from "rxjs";
/**
* An implementation of this abstract class provides functions for direct database access.
* This interface is an extension of the [PouchDB API](https://pouchdb.com/api.html).
*
* PLEASE NOTE:
* Direct access to the Database layer is rarely necessary, and you should probably use EntityMapperService instead.
* Database is not an Angular Service and has to be accessed through the DatabaseResolverService.
*/
export abstract class Database {
constructor(protected dbName: string) {}
/**
* Initialize the database fully after its initial creation,
* e.g. once user details are available.
* @param dbName A special database name, if different from the default name passed in the constructor
*/
abstract init(dbName?: string);
/**
* Whether the database is already initialized and ready for use.
*/
abstract isInitialized(): boolean;
/**
* Load a single document by id from the database.
* @param id The primary key of the document to be loaded
* @param options Optional options for the database engine (PouchDB)
*/
abstract get(id: string, options?: GetOptions): Promise<any>;
/**
* Load all documents (matching the given PouchDB options) from the database.
*
* Normally you should rather use "getAll()" or another well typed method of this class
* instead of passing PouchDB specific options here
* because that will make your code tightly coupled with PouchDB rather than any other database provider.
*
* @param options PouchDB options object as in the normal PouchDB library
*/
abstract allDocs(options?: GetAllOptions): Promise<any>;
/**
* Save a document to the database.
* @param object The document to be saved
* @param forceUpdate (Optional) Whether conflicts should be ignored and an existing conflicting document forcefully overwritten.
*/
abstract put(object: any, forceUpdate?: boolean): Promise<any>;
/**
* Save a bunch of documents at once to the database
* @param objects The documents to be saved
* @param forceUpdate (Optional) Whether conflicts should be ignored and existing conflicting documents forcefully overwritten.
* @returns array holding success responses or errors depending on the success of the operation
*/
abstract putAll(objects: any[], forceUpdate?: boolean): Promise<any[]>;
/**
* Delete a document from the database
* @param object The document to be deleted (usually this object must at least contain the _id and _rev)
*/
abstract remove(object: any): Promise<any>;
/**
* Query data from the database based on a more complex, indexed request.
*
* This is directly calling the PouchDB implementation of this function.
* Also see the documentation there: {@link https://pouchdb.com/api.html#query_database}
*
* @param fun The name of a previously saved database index
* @param options Additional options for the query, like a `key`. See the PouchDB docs for details.
*/
abstract query(fun: any, options?: QueryOptions): Promise<any>;
/**
* Create a database index to `query()` certain data more efficiently in the future.
*
* Also see the PouchDB documentation regarding indices and queries: {@link https://pouchdb.com/api.html#query_database}
*
* @param designDoc The PouchDB style design document for the map/reduce query
*/
abstract saveDatabaseIndex(designDoc: any): Promise<any>;
/**
* Load all documents (with the given prefix) from the database.
* @param prefix The string prefix of document ids that should be retrieved
*/
getAll(prefix = ""): Promise<Array<any>> {
return this.allDocs({
include_docs: true,
startkey: prefix,
endkey: prefix + "\ufff0",
});
}
/**
* @returns true if there are no documents in the database
*/
abstract isEmpty(): Promise<boolean>;
/**
* Closes open connections and un-initializes the database
* (without deleting persisted data, see destroy() for that)
*/
abstract reset(): Promise<any>;
/**
* Closes all open connections to the database base and destroys it (clearing all data)
*/
abstract destroy(): Promise<any>;
abstract changes(): Observable<DatabaseDocChange>;
}
/**
* Based upon PouchDb changes feed format.
*/
export interface DatabaseDocChange {
_id: string;
_rev: string;
_deleted?: boolean;
[key: string]: any;
}
/**
* Basic query options supported by {@link Database}.
*
* also see https://pouchdb.com/guides/queries.html
*/
export type QueryOptions = PouchDB.Query.Options<any, any>;
/**
* Basic database read options supported by {@link Database}.
*
* also see https://pouchdb.com/api.html#fetch_document
*/
export type GetAllOptions =
| PouchDB.Core.AllDocsWithKeyOptions
| PouchDB.Core.AllDocsWithKeysOptions
| PouchDB.Core.AllDocsWithinRangeOptions
| PouchDB.Core.AllDocsOptions;
/**
* Basic database read options supported by {@link Database}.
*
* also see https://pouchdb.com/api.html#fetch_document
*/
export type GetOptions = PouchDB.Core.GetOptions;