import { scalar } from "./base.scalar"; import { memberModel } from "./memberModel"; import { pair } from "./base.pair"; import { middlewareComponent } from "./middlewareComponent"; import { mergeTypeEnum } from "./mergeTypeEnum"; import { httpComponent } from "./httpComponent"; import { wrapEnum } from "./wrapEnum"; import { searchTargetEnum } from "./searchTargetEnum"; import { idTypeEnum } from "./idTypeEnum"; import { model } from "./base.model"; import { projectEntity } from "./projectEntity"; import { countryEnum } from "./countryEnum"; import { languageEnum } from "./languageEnum"; import { applicationEnum } from "./applicationEnum"; import { platformEnum } from "./platformEnum"; export declare namespace entity { type AnyId = scalar.Uuid | scalar.Integer | scalar.Alpha; interface SyncAll { } type NumType = 'smallint' | 'int'; interface Minimal extends scalar.AnyObject { id?: T; } interface Classic extends Minimal { createdAt?: scalar.IsoDatetime; updatedAt?: scalar.IsoDatetime; } interface Action extends Minimal { createdAt?: scalar.IsoDatetime; createdBy?: memberModel.AnyId; updatedAt?: scalar.IsoDatetime; updatedBy?: memberModel.AnyId; _revision?: scalar.Integer; } interface Pure extends Minimal { createdAt?: scalar.IsoDatetime; createdBy?: memberModel.AnyId; updatedAt?: scalar.IsoDatetime; updatedBy?: memberModel.AnyId; _type?: scalar.Alpha; _revision?: scalar.Integer; _keywords?: Array; name?: scalar.Unknown; _name?: scalar.Unknown; num?: scalar.Integer; } interface Doc extends Pure { _merge?: scalar.StrMap>>; _i18n?: scalar.StrMap>>; } interface View extends Minimal { dummy?: unknown; } interface Sys extends scalar.AnyObject { $trash?: scalar.Uuid; $trashedBy?: memberModel.AnyId; $trashedAt?: scalar.IsoDatetime; $trashInfo?: scalar.Title; $ver?: scalar.Integer; $irregulars?: Array; $relation?: scalar.Integer; $createdAt?: scalar.IsoDatetime; $createdBy?: memberModel.AnyId; $updatedAt?: scalar.IsoDatetime; $updatedBy?: memberModel.AnyId; } interface Wrapper = Doc> extends Minimal { deleted?: scalar.Boolean; doc?: E; sys?: Sys; num?: scalar.Integer; search?: Search; } interface Search { id: Array; word: Array; sentence: Array; soundex: Array; metaphone: Array; stemmed: Array; } interface Option extends Record { mandatory?: scalar.Boolean; exists?: scalar.Boolean; formatted?: scalar.Boolean; isList?: scalar.Boolean; mergePath?: scalar.Title; requestIfExists?: scalar.Boolean; modifyType?: scalar.Alpha; existingId?: scalar.Uuid; orderThrowing?: scalar.Boolean; searchIn?: scalar.Boolean; } interface ListCriteria { _order?: scalar.Alpha; _desc?: scalar.Boolean; _limit?: scalar.Integer; _offset?: scalar.Integer; _search?: scalar.Title; } interface Filter extends scalar.AnyObject { } type CastOptFn = (REQ: httpComponent.Req) => scalar.AnyObject; type RouteFn = (router: httpComponent.Router) => void; type FilterCollectFn = (filter: F, OPT?: Option, REQ?: httpComponent.Req) => Promise; type FilterQueryFn = (q: unknown, filter: F, OPT?: Option, REQ?: httpComponent.Req) => Promise; type ReferenceQueryFn = (q: unknown, OPT?: Option, REQ?: httpComponent.Req) => Promise; type ReferenceCheckFn = (ref: scalar.Unknown) => scalar.Alpha; type ReferenceConvertFn = (ref: scalar.Unknown) => scalar.Alpha; type BeforeListFn = (filter: F, OPT?: Option, REQ?: httpComponent.Req) => Promise; type AfterListFn = Doc, F extends Filter = Filter> = (docs: Array, filter: F, OPT?: Option, REQ?: httpComponent.Req) => Promise; type FindQueryFn = (q: unknown, OPT?: Option, REQ?: httpComponent.Req) => Promise; type AfterFindFn = Doc> = (doc: E, OPT?: Option, REQ?: httpComponent.Req) => Promise; type BeforeFormatFn = Doc> = (doc: E, OPT?: Option, REQ?: httpComponent.Req) => Promise; type AfterFormatFn = Doc> = (doc: E, OPT?: Option, REQ?: httpComponent.Req) => Promise; type BeforeCreateFn = Doc> = (doc: E, OPT?: Option, REQ?: httpComponent.Req) => Promise; type AfterCreateFn = Doc> = (doc: E, OPT?: Option, REQ?: httpComponent.Req) => Promise; type BeforeUpdateFn = Doc> = (doc: E, OPT?: Option, REQ?: httpComponent.Req) => Promise; type AfterUpdateFn = Doc> = (doc: E, OPT?: Option, REQ?: httpComponent.Req) => Promise; type BeforeSetFn = Doc> = (doc: E, OPT?: Option, REQ?: httpComponent.Req) => Promise; type AfterSetFn = Doc> = (doc: E, OPT?: Option, REQ?: httpComponent.Req) => Promise; type BeforeSyncFn = Doc> = (doc: E, OPT?: Option, REQ?: httpComponent.Req) => Promise; type AfterSyncFn = Doc> = (doc: E, OPT?: Option, REQ?: httpComponent.Req) => Promise; type BeforeDeleteFn = Doc> = (doc: E, OPT?: Option, REQ?: httpComponent.Req) => Promise; type AfterDeleteFn = Doc> = (doc: E, OPT?: Option, REQ?: httpComponent.Req) => Promise; type AfterAnyModify = Doc> = (doc: E, OPT?: Option, REQ?: httpComponent.Req) => Promise; type BeforeBaseCheck = Doc> = (existing: E, doc: E, OPT?: Option, REQ?: httpComponent.Req) => Promise; type AfterBaseCheck = Doc> = (existing: E, doc: E, OPT?: Option, REQ?: httpComponent.Req) => Promise; interface RelationItem { ownedName: string; ownedId: string; ownedPath: string; childName: string; childId: string; } interface RelationFind { ownedName: string; ownedPath: string; count: number; } interface BanAssignEntity { bannedProjects?: Array; bannedCountries?: Array; bannedLanguages?: Array; bannedApplications?: Array; bannedPlatforms?: Array; } interface ProjectAssignEntity { forAllProjects?: scalar.Boolean; projects?: Array; _projects?: Array; } interface ProjectAssignService = Doc> { findProjectsAsync(doc: E, OPT?: Option, req?: httpComponent.Req): Promise; findProjects(doc: E, OPT?: Option, req?: httpComponent.Req): void; afterProjectAddAsync(projectDoc: projectEntity.Doc, OPT?: Option, req?: httpComponent.Req): Promise; afterProjectDeleteAsync(projectDoc: projectEntity.Doc, OPT?: Option, req?: httpComponent.Req): Promise; } interface Service = Doc, P extends pair.Core = pair.Core, F extends Filter = Filter> extends BaseExt, ConfigExt, HandleExt, LambdaExt, PrivateExt, GetFindExt, model.Base, GetPairExt, GetOtherExt, ModifyExt, CacheExt, PropertyExt { new (name: string): Service; } interface BaseExt = Doc, P extends pair.Core = pair.Core, F extends Filter = Filter> { name: scalar.Alpha; type: scalar.Alpha; optType(type?: scalar.Alpha): Service; table: scalar.Alpha; optTable(table?: scalar.Alpha, schema?: scalar.Alpha): Service; schema: scalar.Alpha; optSchema(schema?: scalar.Title): Service; db: { table: string; schema: string; }; setCustoms(): void; folder: scalar.Alpha; optFolder(folder?: scalar.Title): Service; route: RouteFn; optRoute(fn?: RouteFn): Service; _throwLambdaError(name: scalar.Alpha, fn: scalar.AnyFunc, mandatory?: scalar.Boolean): scalar.AnyFunc; } interface ConfigExt = Doc, P extends pair.Core = pair.Core, F extends Filter = Filter> { isNameI18n: scalar.Boolean; uniqueField: scalar.Alpha; optIgnoreCheck(ignoreCheck?: scalar.Boolean): Service; version: scalar.Integer; optVersion(version?: scalar.Integer): Service; merges: Array; optMerges(...merges: Array): Service; ignoredFields: scalar.Alpha[]; optIgnoredFields(...fields: Array): Service; bannedFields: scalar.Alpha[]; optBannedFields(...fields: Array): Service; } interface HandleExt = Doc, P extends pair.Core = pair.Core, F extends Filter = Filter> { pairHandle: middlewareComponent.CmsMode; optPairHandle(option?: middlewareComponent.CmsModeOption): Service; getHandle: middlewareComponent.CmsMode; optGetHandle(option?: middlewareComponent.CmsModeOption): Service; listHandle: middlewareComponent.CmsMode; optListHandle(option?: middlewareComponent.CmsModeOption): Service; createHandle: middlewareComponent.CmsMode; optCreateHandle(option?: middlewareComponent.CmsModeOption): Service; updateHandle: middlewareComponent.CmsMode; optUpdateHandle(option?: middlewareComponent.CmsModeOption): Service; deleteHandle: middlewareComponent.CmsMode; optDeleteHandle(option?: middlewareComponent.CmsModeOption): Service; } interface LambdaExt = Doc, P extends pair.Core = pair.Core, F extends Filter = Filter> { optFilterCollectAsync(fn?: FilterCollectFn): Service; optFilterQueryAsync(fn?: FilterQueryFn): Service; optBeforeListAsync(fn?: BeforeListFn): Service; optAfterListAsync(fn?: AfterListFn): Service; optFindQueryAsync(fn?: FindQueryFn): Service; optAfterFindAsync(fn?: AfterFindFn): Service; optBeforeFormatAsync(fn?: BeforeFormatFn): Service; optAfterFormatAsync(fn?: AfterFormatFn): Service; optReferenceQueryAsync(fn?: ReferenceQueryFn): Service; optBeforeCreateAsync(fn?: BeforeCreateFn): Service; optAfterCreateAsync(fn?: AfterCreateFn): Service; optBeforeUpdateAsync(fn?: BeforeUpdateFn): Service; optAfterUpdateAsync(fn?: AfterUpdateFn): Service; optBeforeSetAsync(fn?: BeforeSetFn): Service; optAfterSetAsync(fn?: AfterSetFn): Service; optAfterDeleteAsync(fn?: AfterDeleteFn): Service; optBeforeDeleteAsync(fn?: BeforeDeleteFn): Service; optAfterAnyChangingAsync(fn: AfterAnyModify): Service; optBeforeBaseCheckAsync(fn: BeforeBaseCheck): Service; optAfterBaseCheckAsync(fn: AfterBaseCheck): Service; } interface PrivateExt = Doc, P extends pair.Core = pair.Core, F extends Filter = Filter> { _optGrab(REQ: httpComponent.Req): Option; _optExt(OPT: Option, ext: scalar.AnyObject): Option; _applyOrder(q: scalar.Unknown, criteria: ListCriteria, OPT?: Option, REQ?: httpComponent.Req): void; _applyLimitOffset(q: scalar.Unknown, criteria: ListCriteria, OPT?: Option, REQ?: httpComponent.Req): void; _searchInSql(q: scalar.Unknown, keywords: Array, OPT?: Option, REQ?: httpComponent.Req): void; _applySearch(q: scalar.Unknown, criteria: ListCriteria, OPT?: Option, REQ?: httpComponent.Req): void; _validateRefAsync(existing: E, doc: E, OPT?: Option, REQ?: httpComponent.Req): Promise; _iterateNewRefAsync(property: Property, ref: scalar.Title, OPT?: Option, REQ?: httpComponent.Req): Promise; _checkRefWithIdAsync(ref: scalar.Title, OPT?: Option, REQ?: httpComponent.Req): Promise; _clearSilents(doc: E, OPT?: Option, REQ?: httpComponent.Req): void; _clearInsertables(doc: E, OPT?: Option, REQ?: httpComponent.Req): void; _requestInsertablesAsync(doc: E, OPT?: Option, REQ?: httpComponent.Req): Promise; _requestUpdatablesAsync(doc: E, OPT?: Option, REQ?: httpComponent.Req): Promise; _syncFields(doc: E, OPT?: Option, REQ?: httpComponent.Req): Sys; _clearRelationsAsync(doc: E, OPT?: Option, REQ?: httpComponent.Req): Promise; _getRelationsAsync(doc: E, OPT?: Option, REQ?: httpComponent.Req): Promise>; _addRelationsAsync(doc: E, OPT?: Option, REQ?: httpComponent.Req): Promise>; _addHistoryAsync(existing: E, doc: E, OPT?: Option, REQ?: httpComponent.Req): Promise; } interface GetFindExt = Doc, P extends pair.Core = pair.Core, F extends Filter = Filter> { /** * Finds record with any reference (id, code or num) * */ findAsync(ref: scalar.Unknown, OPT?: Option, REQ?: httpComponent.Req): Promise; /** * Finds record with id * */ findByIdAsync(ref: scalar.Unknown, OPT?: Option, REQ?: httpComponent.Req): Promise; /** * Finds record with code or name * */ findByCodeAsync(ref: scalar.Unknown, OPT?: Option, REQ?: httpComponent.Req): Promise; /** * Finds record with num * */ findByNumAsync(ref: scalar.Unknown, OPT?: Option, REQ?: httpComponent.Req): Promise; /** * Lists records with any reference (id, code or num) * */ findArrayAsync(refs: scalar.Unknown, OPT?: Option, REQ?: httpComponent.Req): Promise>; } interface GetPairExt = Doc, P extends pair.Core = pair.Core, F extends Filter = Filter> { pairSize: scalar.Integer; optPairSize(pairSize: scalar.Integer): Service; suggestSize: scalar.Integer; optSuggestSize(suggestSize: scalar.Integer): Service; _suggestQuery(q: unknown, keyword: scalar.Title, level: 'starts' | 'includes' | 'search', ids?: Array, OPT?: Option, REQ?: httpComponent.Req): void; /** * Builds pair * */ _buildPair(doc: E, OPT?: Option, REQ?: httpComponent.Req): P; /** * Returns default pair * */ defaultPair(OPT?: Option, REQ?: httpComponent.Req): P; /** * Lists pairs * */ listPairsAsync(filter: F, OPT?: Option, REQ?: httpComponent.Req): Promise>; /** * Suggests pairs by keyword * */ suggestPairsAsync(keyword: scalar.Unknown, filter: F, OPT?: Option, REQ?: httpComponent.Req): Promise>; /** * get pair by ref * */ pairAsync(ref: scalar.Unknown, OPT?: Option, REQ?: httpComponent.Req): Promise

; /** * get pair array by ref array * */ pairArrayAsync(refs: scalar.Unknown, OPT?: Option, REQ?: httpComponent.Req): Promise>; } interface GetOtherExt = Doc, P extends pair.Core = pair.Core, F extends Filter = Filter> { /** * Formats document * */ formatAsync(doc: E, OPT?: Option, REQ?: httpComponent.Req): Promise; /** * Lists document array * */ listAsync(filter: F, OPT?: Option, REQ?: httpComponent.Req): Promise>; /** * Returns raw document * */ rawAsync(ref: scalar.Unknown, OPT?: Option, REQ?: httpComponent.Req): Promise>; } interface ModifyExt = Doc, P extends pair.Core = pair.Core, F extends Filter = Filter> { syncSize: scalar.Integer; optSyncSize(syncSize: scalar.Integer): Service; /** * Creates a record * */ createAsync(body: Partial, OPT?: Option, REQ?: httpComponent.Req): Promise; /** * Prepares a record for creation * */ prepareAsync(OPT?: Option, REQ?: httpComponent.Req): Promise; /** * Prepares an existing record for cloning/creation * */ cloneAsync(ref: scalar.Unknown, OPT?: Option, REQ?: httpComponent.Req): Promise; /** * Updates a record, full-update * */ updateAsync(ref: scalar.Unknown, body: Partial, OPT?: Option, REQ?: httpComponent.Req): Promise; /** * Updates a record, partially-update * */ setPartialAsync(ref: scalar.Unknown, body: Partial, OPT?: Option, REQ?: httpComponent.Req): Promise; /** * Syncs a record * */ syncAsync(ref: scalar.Unknown, OPT?: Option, REQ?: httpComponent.Req): Promise; /** * Syncs all records * */ syncAllAsync(OPT?: Option, REQ?: httpComponent.Req): Promise; /** * Deletes a record * */ deleteAsync(ref: scalar.Unknown, OPT?: Option, REQ?: httpComponent.Req): Promise; /** * General on update * */ baseCheckAsync(existing: E, doc: E, OPT?: Option, REQ?: httpComponent.Req): Promise; } interface CacheExt = Doc, P extends pair.Core = pair.Core, F extends Filter = Filter> { cacheEnabled: scalar.Boolean; optCacheEnabled(cacheEnabled?: scalar.Boolean): Service; cacheShared: scalar.Boolean; optCacheShared(cacheShared?: scalar.Boolean): Service; _cacheHashId(id: string): string; _cacheHashCode(code: string): string; _cacheHashNum(num: number): string; _cacheGetAsync(REQ: httpComponent.Req, hash: string): Promise; _cacheSetAsync(REQ: httpComponent.Req, doc: E, ...parts: Array): Promise; _cacheDeleteAsync(REQ: httpComponent.Req, doc: E): Promise; _cacheRefreshAsync(REQ: httpComponent.Req, doc: E): Promise; } interface PropertyExt = Doc, P extends pair.Core = pair.Core, F extends Filter = Filter> { orderDefault: scalar.Alpha; finalized: scalar.Boolean; numType: NumType; hiddenFields: Array; onlyReadFields: Array; transientFields: Array; insertableFields: Array; updatableFields: Array; optionalFields: Array; mergeableFields: Array; historyFields: Array; alphaFields: Array; alphaTargets: Array; i18nFields: Array; orderFields: Array; relationFields: Array; referenceFields: Array; searchFields: Array; properties: Map; hasProperty(name: string): scalar.Boolean; getProperty(name: string): Property; optProperty(name: string): Property; optNumType(numType: NumType): Service; validate(): Service; } interface Property { new (service: Service, name: string): Property; _service: Service; _name: string; _pathName: string; back(): Service; _hidden?: scalar.Boolean; hidden(hidden?: scalar.Boolean): Property; _onlyRead?: scalar.Boolean; onlyRead(onlyRead?: scalar.Boolean): Property; _mergeable?: scalar.Boolean; mergeable(mergeable?: scalar.Boolean): Property; _insertable?: scalar.Boolean; insertable(insertable?: scalar.Boolean): Property; _updatable?: scalar.Boolean; updatable(updatable?: scalar.Boolean): Property; _optional?: scalar.Boolean; optional(optional?: scalar.Boolean): Property; _transient?: scalar.Boolean; transient(transient?: scalar.Boolean): Property; _inHistory?: scalar.Boolean; inHistory(inHistory?: scalar.Boolean): Property; _alphaTarget?: scalar.String; alphaTarget(alphaTarget?: scalar.String): Property; _i18n?: scalar.Boolean; i18n(i18n?: scalar.Boolean): Property; _casting?: scalar.Alpha; casting(casting?: scalar.Alpha): Property; castingText(): Property; castingInt(): Property; castingUuid(): Property; castingBool(): Property; castingDatetime(): Property; castingFloat(): Property; _wrap?: wrapEnum.Id; wrap(wrap?: wrapEnum.Id): Property; wrapPlain(): Property; wrapArray(): Property; wrapMap(): Property; wrapCustom(): Property; _searchTarget?: searchTargetEnum.Id; searchTarget(searchTarget?: searchTargetEnum.Id): Property; searchAsId(): Property; searchAsWord(): Property; searchAsSentence(): Property; _relation?: Relation; relation(relation?: string | Relation): Property; _order?: Order; order(order?: Order): Property; orderAsc(): Property; orderDesc(): Property; _reference?: Reference; reference(reference?: Reference): Property; referenceStandard(): Property; _prepareValue: scalar.Unknown | scalar.AnyFunc; prepareValue(prepareValue?: scalar.Unknown | scalar.AnyFunc): Property; _read?: scalar.CastFn; _isSyncRead?: scalar.Boolean; _optRead?: scalar.AnyObject | CastOptFn; read(fn: scalar.CastFn, isSync?: scalar.Boolean, opt?: scalar.AnyObject | CastOptFn): Property; readDirect(fn: scalar.CastFn, opt?: scalar.AnyObject | CastOptFn): Property; readAwait(fn: scalar.CastFn, opt?: scalar.AnyObject | CastOptFn): Property; _format?: scalar.CastFn; _isSyncFormat?: scalar.Boolean; _optFormat?: scalar.AnyObject | CastOptFn; format(fn: scalar.CastFn, isSync?: scalar.Boolean, opt?: scalar.AnyObject | CastOptFn): Property; formatDirect(fn: scalar.CastFn, opt?: scalar.AnyObject | CastOptFn): Property; formatAwait(fn: scalar.CastFn, opt?: scalar.AnyObject | CastOptFn): Property; } interface Relation { name: scalar.Alpha; } interface Order { def?: scalar.Boolean; desc?: scalar.Boolean; } interface Reference { delimiter?: scalar.Alpha; iteration?: scalar.Integer; checkFn?: ReferenceCheckFn; convertFn?: ReferenceConvertFn; } }