| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181 |
- import {ModelId} from '../types.js';
- import {Flatten} from '../types.js';
- import {ModelData} from '../types.js';
- import {PartialBy} from '../types.js';
- import {Service} from '@e22m4u/js-service';
- import {Adapter} from '../adapter/index.js';
- import {WhereClause} from '../filter/index.js';
- import {FilterClause} from '../filter/index.js';
- import {ItemFilterClause} from '../filter/index.js';
- import {ServiceContainer} from '@e22m4u/js-service';
- import {DEFAULT_PRIMARY_KEY_PROPERTY_NAME} from '../definition/index.js';
- /**
- * Repository.
- */
- export declare class Repository<
- Data extends object = ModelData,
- IdType extends ModelId = ModelId,
- IdName extends string = typeof DEFAULT_PRIMARY_KEY_PROPERTY_NAME,
- FlatData extends ModelData = Flatten<Data>,
- > extends Service {
- // it fixes unused generic bug
- private _Data?: Data;
- private _IdType?: IdType;
- private _IdName?: IdName;
- private _FlatData?: FlatData;
- /**
- * Model name.
- */
- get modelName(): string;
- /**
- * Datasource name.
- */
- get datasourceName(): string;
- /**
- * Constructor.
- *
- * @param container
- * @param modelName
- */
- constructor(container: ServiceContainer, modelName: string);
- /**
- * Get adapter.
- */
- getAdapter(): Promise<Adapter>;
- /**
- * Create.
- *
- * @param data
- * @param filter
- */
- create(
- data: OptionalUnlessRequiredId<IdName, FlatData>,
- filter?: ItemFilterClause,
- ): Promise<FlatData>;
- /**
- * Replace by id.
- *
- * @param id
- * @param data
- * @param filter
- */
- replaceById(
- id: IdType,
- data: WithoutId<IdName, FlatData>,
- filter?: ItemFilterClause,
- ): Promise<FlatData>;
- /**
- * Replace or create.
- *
- * @param data
- * @param filter
- */
- replaceOrCreate(
- data: OptionalUnlessRequiredId<IdName, Data>,
- filter?: ItemFilterClause,
- ): Promise<FlatData>;
- /**
- * Patch.
- *
- * @param data
- * @param where
- */
- patch(
- data: PartialWithoutId<IdName, Data>,
- where?: WhereClause,
- ): Promise<number>;
- /**
- * Patch by id.
- *
- * @param id
- * @param data
- * @param filter
- */
- patchById(
- id: IdType,
- data: PartialWithoutId<IdName, Data>,
- filter?: ItemFilterClause,
- ): Promise<FlatData>;
- /**
- * Find.
- *
- * @param filter
- */
- find(filter?: FilterClause): Promise<FlatData[]>;
- /**
- * Find one.
- *
- * @param filter
- */
- findOne(filter?: FilterClause): Promise<FlatData | undefined>;
- /**
- * Find by id.
- *
- * @param id
- * @param filter
- */
- findById(id: IdType, filter?: ItemFilterClause): Promise<FlatData>;
- /**
- * Delete.
- *
- * @param where
- */
- delete(where?: WhereClause): Promise<number>;
- /**
- * Delete by id.
- *
- * @param id
- */
- deleteById(id: IdType): Promise<boolean>;
- /**
- * Exists.
- *
- * @param id
- */
- exists(id: IdType): Promise<boolean>;
- /**
- * Count.
- *
- * @param where
- */
- count(where?: WhereClause): Promise<number>;
- }
- /**
- * Removes id field.
- */
- type WithoutId<IdName extends string, Data extends ModelData> = Flatten<
- Omit<Data, IdName>
- >;
- /**
- * Makes fields as optional and remove id field.
- */
- type PartialWithoutId<IdName extends string, Data extends object> = Flatten<
- Partial<Omit<Data, IdName>>
- >;
- /**
- * Makes the required id field as optional.
- */
- type OptionalUnlessRequiredId<
- IdName extends string,
- Data extends object,
- > = Flatten<Data extends {[K in IdName]: any} ? PartialBy<Data, IdName> : Data>;
|