@chevre/domain
Version:
Chevre Domain Library for Node.js
64 lines (63 loc) • 1.85 kB
TypeScript
import type { Connection, FilterQuery } from 'mongoose';
import * as factory from '../factory';
import { IProductModel } from './mongoose/schemas/productModel';
type IKeyOfProjection = keyof IProductModel | '_id';
type ISearchConditions = Pick<factory.product.ISearchConditions, 'id' | 'limit' | 'page' | 'project'> & {
category?: {
codeValue?: {
$in?: string[];
};
inCodeSet?: {
identifier?: {
$eq?: string;
};
};
};
};
/**
* プロダクトモデルリポジトリ
*/
export declare class ProductModelRepo {
private readonly productModelModel;
constructor(connection: Connection);
static CREATE_MONGO_CONDITIONS(params: ISearchConditions): FilterQuery<factory.product.IProduct>[];
search(conditions: ISearchConditions, inclusion: IKeyOfProjection[], exclusion: IKeyOfProjection[]): Promise<IProductModel[]>;
deleteById(params: {
id: string;
}): Promise<void>;
/**
* プロダクトを保管する
*/
save(params: {
/**
* idを指定すれば更新
*/
id?: string;
$set: IProductModel;
}): Promise<{
id: string;
}>;
/**
* 区分から同期する
*/
upsertByCategory(params: {
category: Pick<factory.categoryCode.ICategoryCode, 'codeValue' | 'inCodeSet' | 'name' | 'project'> & {
id: string;
};
}): Promise<{
id: string;
}>;
/**
* 区分から削除する
*/
deleteByCategory(params: {
category: Pick<factory.categoryCode.ICategoryCode, 'project'> & {
id: string;
};
}): Promise<void>;
unsetUnnecessaryFields(params: {
filter: any;
$unset: any;
}): Promise<import("mongoose").UpdateWriteOpResult>;
}
export {};