import { Identifier, Projection, Query, Update } from './CollectionTypes'; /** * A collection of data. */ export default interface Collection { /** * Insert the document in database. * * @param newDoc - Document to insert. */ insert(newDoc: T): Promise; /** * Count the documents in database. * * @param query - Selection query. */ count(query: Query): Promise; /** * Find documents in database. * * @param query - Selection query. * @param projection - Fields to select. */ find(query: Query, projection?: Projection): Promise>; /** * Find a single document in database. * * @param query - Selection query. * @param projection - Fields to select. */ findOne(query: Query, projection?: Projection): Promise<(Identifier & T) | undefined>; /** * Update a document in database. * * @param query - Selection query. * @param updateQuery - Update query. * @param upsert - True to insert if no row selected (default is false). */ update(query: Query, updateQuery: Update, upsert?: boolean): Promise; /** * Remove a document in database. * * @param query - Selection query. */ remove(query: Query): Promise; }