Taichi Masuyama 4 лет назад
Родитель
Сommit
7cd0e0b5a0

+ 2 - 2
packages/app/src/interfaces/named-query.ts

@@ -1,13 +1,13 @@
 import { IUser } from './user';
 
 
-export enum SearchResolverName {
+export enum SearchDelegatorName {
   DEFAULT = 'FullTextSearch',
   PRIVATE_LEGACY_PAGES = 'PrivateLegacyPages',
 }
 export interface INamedQuery {
   name: string
   aliasOf?: string
-  resolverName?: SearchResolverName
+  delegatorName?: SearchDelegatorName
   creator?: IUser
 }

+ 29 - 0
packages/app/src/server/interfaces/search.ts

@@ -0,0 +1,29 @@
+import { SearchDelegatorName } from '~/interfaces/named-query';
+
+export type ParsedQuery = {
+  originalString: string
+  nqNames: string[]
+}
+
+export interface SearchQueryParser {
+  parseSearchQuery(queryString): Promise<ParsedQuery>
+}
+
+export interface SearchResolver {
+  resolve(parsedQuery: ParsedQuery): SearchDelegator
+}
+
+export interface SearchDelegator<T> {
+  name: DelegatorName
+  search(queryString: string | null, user, userGroups, option): PaginateResult<T> & MetaData
+}
+
+type PaginateResult<T> = {
+  limit: number
+  offset: number
+  data: T
+}
+
+type MetaData = {
+  meta: { [key:string]: any }
+}