@webiny/api-aco 0.0.0-ee-vpcs.549378cf03 → 0.0.0-unstable.085ff6572f

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (149) hide show
  1. package/README.md +15 -0
  2. package/apps/AcoApp.d.ts +16 -0
  3. package/apps/AcoApp.js +108 -0
  4. package/apps/AcoApp.js.map +1 -0
  5. package/apps/AcoApps.d.ts +10 -0
  6. package/apps/AcoApps.js +76 -0
  7. package/apps/AcoApps.js.map +1 -0
  8. package/apps/app.gql.d.ts +3 -0
  9. package/apps/app.gql.js +58 -0
  10. package/apps/app.gql.js.map +1 -0
  11. package/apps/index.d.ts +2 -0
  12. package/apps/index.js +27 -0
  13. package/apps/index.js.map +1 -0
  14. package/createAcoContext.d.ts +3 -0
  15. package/createAcoContext.js +100 -0
  16. package/createAcoContext.js.map +1 -0
  17. package/createAcoGraphQL.d.ts +3 -0
  18. package/createAcoGraphQL.js +121 -0
  19. package/createAcoGraphQL.js.map +1 -0
  20. package/createAcoHooks.d.ts +2 -0
  21. package/createAcoHooks.js +11 -0
  22. package/createAcoHooks.js.map +1 -0
  23. package/createAcoModels.d.ts +2 -0
  24. package/createAcoModels.js +42 -0
  25. package/createAcoModels.js.map +1 -0
  26. package/createAcoStorageOperations.d.ts +10 -0
  27. package/createAcoStorageOperations.js +19 -0
  28. package/createAcoStorageOperations.js.map +1 -0
  29. package/fields/index.d.ts +2 -0
  30. package/fields/index.js +12 -0
  31. package/fields/index.js.map +1 -0
  32. package/fields/location.d.ts +2 -0
  33. package/fields/location.js +44 -0
  34. package/fields/location.js.map +1 -0
  35. package/folder/folder.crud.d.ts +3 -0
  36. package/folder/folder.crud.js +110 -0
  37. package/folder/folder.crud.js.map +1 -0
  38. package/folder/folder.gql.d.ts +3 -0
  39. package/folder/folder.gql.js +118 -0
  40. package/folder/folder.gql.js.map +1 -0
  41. package/folder/folder.model.d.ts +4 -0
  42. package/folder/folder.model.js +75 -0
  43. package/folder/folder.model.js.map +1 -0
  44. package/folder/folder.so.d.ts +3 -0
  45. package/folder/folder.so.js +151 -0
  46. package/folder/folder.so.js.map +1 -0
  47. package/folder/folder.types.d.ts +89 -0
  48. package/folder/folder.types.js +5 -0
  49. package/folder/folder.types.js.map +1 -0
  50. package/folder/onFolderBeforeDelete.hook.d.ts +2 -0
  51. package/folder/onFolderBeforeDelete.hook.js +66 -0
  52. package/folder/onFolderBeforeDelete.hook.js.map +1 -0
  53. package/index.d.ts +5 -9
  54. package/index.js +48 -63
  55. package/index.js.map +1 -1
  56. package/package.json +35 -30
  57. package/plugins/AcoAppModifierPlugin.d.ts +43 -0
  58. package/plugins/AcoAppModifierPlugin.js +59 -0
  59. package/plugins/AcoAppModifierPlugin.js.map +1 -0
  60. package/plugins/AcoAppRegisterPlugin.d.ts +8 -0
  61. package/plugins/AcoAppRegisterPlugin.js +22 -0
  62. package/plugins/AcoAppRegisterPlugin.js.map +1 -0
  63. package/plugins/index.d.ts +2 -0
  64. package/plugins/index.js +27 -0
  65. package/plugins/index.js.map +1 -0
  66. package/record/graphql/createAppResolvers.d.ts +14 -0
  67. package/record/graphql/createAppResolvers.js +108 -0
  68. package/record/graphql/createAppResolvers.js.map +1 -0
  69. package/record/graphql/createAppSchema.d.ts +9 -0
  70. package/record/graphql/createAppSchema.js +142 -0
  71. package/record/graphql/createAppSchema.js.map +1 -0
  72. package/record/record.crud.d.ts +3 -0
  73. package/record/record.crud.js +126 -0
  74. package/record/record.crud.js.map +1 -0
  75. package/record/record.gql.d.ts +8 -0
  76. package/record/record.gql.js +41 -0
  77. package/record/record.gql.js.map +1 -0
  78. package/record/record.model.d.ts +10 -0
  79. package/record/record.model.js +86 -0
  80. package/record/record.model.js.map +1 -0
  81. package/record/record.so.d.ts +3 -0
  82. package/record/record.so.js +150 -0
  83. package/record/record.so.js.map +1 -0
  84. package/record/record.types.d.ts +143 -0
  85. package/record/record.types.js +5 -0
  86. package/record/record.types.js.map +1 -0
  87. package/types.d.ts +73 -201
  88. package/types.js +35 -1
  89. package/types.js.map +1 -1
  90. package/utils/acoRecordId.d.ts +6 -0
  91. package/utils/acoRecordId.js +33 -0
  92. package/utils/acoRecordId.js.map +1 -0
  93. package/utils/checkPermissions.d.ts +2 -0
  94. package/utils/checkPermissions.js +14 -0
  95. package/utils/checkPermissions.js.map +1 -0
  96. package/utils/createListSort.d.ts +2 -0
  97. package/utils/createListSort.js +13 -0
  98. package/utils/createListSort.js.map +1 -0
  99. package/utils/createModelField.d.ts +5 -0
  100. package/utils/createModelField.js +37 -0
  101. package/utils/createModelField.js.map +1 -0
  102. package/utils/createOperationsWrapper.d.ts +9 -0
  103. package/utils/createOperationsWrapper.js +29 -0
  104. package/utils/createOperationsWrapper.js.map +1 -0
  105. package/utils/fieldResolver.d.ts +16 -0
  106. package/utils/fieldResolver.js +44 -0
  107. package/utils/fieldResolver.js.map +1 -0
  108. package/utils/getFieldValues.d.ts +5 -0
  109. package/utils/getFieldValues.js +16 -0
  110. package/utils/getFieldValues.js.map +1 -0
  111. package/utils/getFolderAndItsAncestors.d.ts +7 -0
  112. package/utils/getFolderAndItsAncestors.js +48 -0
  113. package/utils/getFolderAndItsAncestors.js.map +1 -0
  114. package/utils/isInstallationPending.d.ts +4 -0
  115. package/utils/isInstallationPending.js +21 -0
  116. package/utils/isInstallationPending.js.map +1 -0
  117. package/utils/modelFactory.d.ts +15 -0
  118. package/utils/modelFactory.js +25 -0
  119. package/utils/modelFactory.js.map +1 -0
  120. package/utils/resolve.d.ts +3 -0
  121. package/utils/resolve.js +24 -0
  122. package/utils/resolve.js.map +1 -0
  123. package/context/folders.d.ts +0 -2
  124. package/context/folders.js +0 -261
  125. package/context/folders.js.map +0 -1
  126. package/context/index.d.ts +0 -2
  127. package/context/index.js +0 -22
  128. package/context/index.js.map +0 -1
  129. package/context/links.d.ts +0 -2
  130. package/context/links.js +0 -270
  131. package/context/links.js.map +0 -1
  132. package/graphql/base.gql.d.ts +0 -3
  133. package/graphql/base.gql.js +0 -63
  134. package/graphql/base.gql.js.map +0 -1
  135. package/graphql/folders.gql.d.ts +0 -3
  136. package/graphql/folders.gql.js +0 -126
  137. package/graphql/folders.gql.js.map +0 -1
  138. package/graphql/index.d.ts +0 -1
  139. package/graphql/index.js +0 -15
  140. package/graphql/index.js.map +0 -1
  141. package/graphql/links.gql.d.ts +0 -3
  142. package/graphql/links.gql.js +0 -123
  143. package/graphql/links.gql.js.map +0 -1
  144. package/subscriptions/afterFolderDelete.d.ts +0 -3
  145. package/subscriptions/afterFolderDelete.js +0 -62
  146. package/subscriptions/afterFolderDelete.js.map +0 -1
  147. package/subscriptions/index.d.ts +0 -3
  148. package/subscriptions/index.js +0 -14
  149. package/subscriptions/index.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"names":["createSchema","params","context","app","plugins","byType","reduce","fields","plugin","fieldType","models","security","withoutAuthorization","cms","listModels","filter","model","isPrivate","benchmark","measure","name","GraphQLSchemaPlugin","typeDefs","createAppSchema","resolvers","createAppResolvers"],"sources":["record.gql.ts"],"sourcesContent":["import { AcoContext, IAcoApp } from \"~/types\";\nimport { CmsFieldTypePlugins, CmsModelFieldToGraphQLPlugin } from \"@webiny/api-headless-cms/types\";\nimport { GraphQLSchemaPlugin } from \"@webiny/handler-graphql\";\nimport { createAppSchema } from \"./graphql/createAppSchema\";\nimport { createAppResolvers } from \"./graphql/createAppResolvers\";\n\ninterface Params {\n context: AcoContext;\n app: IAcoApp;\n}\n\nexport const createSchema = async (params: Params) => {\n const { context, app } = params;\n const plugins = context.plugins\n .byType<CmsModelFieldToGraphQLPlugin>(\"cms-model-field-to-graphql\")\n .reduce<CmsFieldTypePlugins>((fields, plugin) => {\n fields[plugin.fieldType] = plugin;\n return fields;\n }, {});\n const models = await context.security.withoutAuthorization(async () => {\n return (await context.cms.listModels()).filter(model => {\n return !model.isPrivate;\n });\n });\n\n return context.benchmark.measure(`aco.schema.generate.${app.name}`, async () => {\n const plugin = new GraphQLSchemaPlugin({\n typeDefs: createAppSchema({\n models,\n app,\n plugins\n }),\n resolvers: createAppResolvers({\n models,\n app,\n plugins\n })\n });\n plugin.name = `aco.graphql.appSchema.searchRecord.${app.name}`;\n return plugin;\n });\n};\n"],"mappings":";;;;;;AAEA;AACA;AACA;AAOO,MAAMA,YAAY,GAAG,MAAOC,MAAc,IAAK;EAClD,MAAM;IAAEC,OAAO;IAAEC;EAAI,CAAC,GAAGF,MAAM;EAC/B,MAAMG,OAAO,GAAGF,OAAO,CAACE,OAAO,CAC1BC,MAAM,CAA+B,4BAA4B,CAAC,CAClEC,MAAM,CAAsB,CAACC,MAAM,EAAEC,MAAM,KAAK;IAC7CD,MAAM,CAACC,MAAM,CAACC,SAAS,CAAC,GAAGD,MAAM;IACjC,OAAOD,MAAM;EACjB,CAAC,EAAE,CAAC,CAAC,CAAC;EACV,MAAMG,MAAM,GAAG,MAAMR,OAAO,CAACS,QAAQ,CAACC,oBAAoB,CAAC,YAAY;IACnE,OAAO,CAAC,MAAMV,OAAO,CAACW,GAAG,CAACC,UAAU,EAAE,EAAEC,MAAM,CAACC,KAAK,IAAI;MACpD,OAAO,CAACA,KAAK,CAACC,SAAS;IAC3B,CAAC,CAAC;EACN,CAAC,CAAC;EAEF,OAAOf,OAAO,CAACgB,SAAS,CAACC,OAAO,CAAE,uBAAsBhB,GAAG,CAACiB,IAAK,EAAC,EAAE,YAAY;IAC5E,MAAMZ,MAAM,GAAG,IAAIa,mCAAmB,CAAC;MACnCC,QAAQ,EAAE,IAAAC,gCAAe,EAAC;QACtBb,MAAM;QACNP,GAAG;QACHC;MACJ,CAAC,CAAC;MACFoB,SAAS,EAAE,IAAAC,sCAAkB,EAAC;QAC1Bf,MAAM;QACNP,GAAG;QACHC;MACJ,CAAC;IACL,CAAC,CAAC;IACFI,MAAM,CAACY,IAAI,GAAI,sCAAqCjB,GAAG,CAACiB,IAAK,EAAC;IAC9D,OAAOZ,MAAM;EACjB,CAAC,CAAC;AACN,CAAC;AAAC"}
@@ -0,0 +1,10 @@
1
+ import { CmsModelField } from "@webiny/api-headless-cms/types";
2
+ import { CmsPrivateModelFull } from "@webiny/api-headless-cms";
3
+ export declare type SearchRecordModelDefinition = Omit<CmsPrivateModelFull, "noValidate" | "group">;
4
+ export declare const SEARCH_RECORD_MODEL_ID = "acoSearchRecord";
5
+ interface CreateSearchModelDefinitionParams {
6
+ fields?: CmsModelField[];
7
+ }
8
+ export declare const DEFAULT_FIELDS: string[];
9
+ export declare const createSearchModelDefinition: (params?: CreateSearchModelDefinitionParams) => SearchRecordModelDefinition;
10
+ export {};
@@ -0,0 +1,86 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.createSearchModelDefinition = exports.SEARCH_RECORD_MODEL_ID = exports.DEFAULT_FIELDS = void 0;
7
+ var _createModelField = require("../utils/createModelField");
8
+ const typeField = () => (0, _createModelField.createModelField)({
9
+ label: "Type",
10
+ type: "text",
11
+ validation: [{
12
+ name: "required",
13
+ message: "Value is required."
14
+ }]
15
+ });
16
+ const titleField = () => (0, _createModelField.createModelField)({
17
+ label: "Title",
18
+ type: "text",
19
+ validation: [{
20
+ name: "required",
21
+ message: "Value is required."
22
+ }]
23
+ });
24
+ const contentField = () => (0, _createModelField.createModelField)({
25
+ label: "Content",
26
+ type: "text"
27
+ });
28
+ const locationField = fields => (0, _createModelField.createModelField)({
29
+ label: "Location",
30
+ type: "object",
31
+ multipleValues: false,
32
+ validation: [{
33
+ name: "required",
34
+ message: "The location field must be populated."
35
+ }],
36
+ settings: {
37
+ fields
38
+ }
39
+ });
40
+ const locationFolderIdField = () => (0, _createModelField.createModelField)({
41
+ label: "Folder Id",
42
+ type: "text",
43
+ validation: [{
44
+ name: "required",
45
+ message: "Value is required."
46
+ }]
47
+ });
48
+ const dataField = fields => {
49
+ return (0, _createModelField.createModelField)({
50
+ label: "Data",
51
+ type: "object",
52
+ multipleValues: false,
53
+ validation: [{
54
+ name: "required",
55
+ message: "The data field must be populated."
56
+ }],
57
+ settings: {
58
+ fields
59
+ }
60
+ });
61
+ };
62
+ const tagsField = () => (0, _createModelField.createModelField)({
63
+ label: "Tags",
64
+ type: "text",
65
+ multipleValues: true,
66
+ validation: [{
67
+ name: "required",
68
+ message: "The tags field must be populated."
69
+ }]
70
+ });
71
+ const SEARCH_RECORD_MODEL_ID = "acoSearchRecord";
72
+ exports.SEARCH_RECORD_MODEL_ID = SEARCH_RECORD_MODEL_ID;
73
+ const DEFAULT_FIELDS = ["type", "title", "content", "location", "data", "tags"];
74
+ exports.DEFAULT_FIELDS = DEFAULT_FIELDS;
75
+ const createSearchModelDefinition = params => {
76
+ return {
77
+ name: "ACO - Search Record",
78
+ modelId: SEARCH_RECORD_MODEL_ID,
79
+ titleFieldId: "title",
80
+ layout: DEFAULT_FIELDS.map(field => [field]),
81
+ fields: [typeField(), titleField(), contentField(), locationField([locationFolderIdField()]), dataField(params === null || params === void 0 ? void 0 : params.fields), tagsField()],
82
+ description: "ACO - Search record model",
83
+ isPrivate: true
84
+ };
85
+ };
86
+ exports.createSearchModelDefinition = createSearchModelDefinition;
@@ -0,0 +1 @@
1
+ {"version":3,"names":["typeField","createModelField","label","type","validation","name","message","titleField","contentField","locationField","fields","multipleValues","settings","locationFolderIdField","dataField","tagsField","SEARCH_RECORD_MODEL_ID","DEFAULT_FIELDS","createSearchModelDefinition","params","modelId","titleFieldId","layout","map","field","description","isPrivate"],"sources":["record.model.ts"],"sourcesContent":["import { CmsModelField } from \"@webiny/api-headless-cms/types\";\nimport { createModelField } from \"~/utils/createModelField\";\nimport { CmsPrivateModelFull } from \"@webiny/api-headless-cms\";\n\nexport type SearchRecordModelDefinition = Omit<CmsPrivateModelFull, \"noValidate\" | \"group\">;\n\nconst typeField = () =>\n createModelField({\n label: \"Type\",\n type: \"text\",\n validation: [\n {\n name: \"required\",\n message: \"Value is required.\"\n }\n ]\n });\n\nconst titleField = () =>\n createModelField({\n label: \"Title\",\n type: \"text\",\n validation: [\n {\n name: \"required\",\n message: \"Value is required.\"\n }\n ]\n });\n\nconst contentField = () =>\n createModelField({\n label: \"Content\",\n type: \"text\"\n });\n\nconst locationField = (fields: CmsModelField[]) =>\n createModelField({\n label: \"Location\",\n type: \"object\",\n multipleValues: false,\n validation: [\n {\n name: \"required\",\n message: \"The location field must be populated.\"\n }\n ],\n settings: {\n fields\n }\n });\n\nconst locationFolderIdField = () =>\n createModelField({\n label: \"Folder Id\",\n type: \"text\",\n validation: [\n {\n name: \"required\",\n message: \"Value is required.\"\n }\n ]\n });\n\nconst dataField = (fields?: CmsModelField[]) => {\n return createModelField({\n label: \"Data\",\n type: \"object\",\n multipleValues: false,\n validation: [\n {\n name: \"required\",\n message: \"The data field must be populated.\"\n }\n ],\n settings: {\n fields\n }\n });\n};\n\nconst tagsField = () =>\n createModelField({\n label: \"Tags\",\n type: \"text\",\n multipleValues: true,\n validation: [\n {\n name: \"required\",\n message: \"The tags field must be populated.\"\n }\n ]\n });\n\nexport const SEARCH_RECORD_MODEL_ID = \"acoSearchRecord\";\n\ninterface CreateSearchModelDefinitionParams {\n fields?: CmsModelField[];\n}\n\nexport const DEFAULT_FIELDS = [\"type\", \"title\", \"content\", \"location\", \"data\", \"tags\"];\n\nexport const createSearchModelDefinition = (\n params?: CreateSearchModelDefinitionParams\n): SearchRecordModelDefinition => {\n return {\n name: \"ACO - Search Record\",\n modelId: SEARCH_RECORD_MODEL_ID,\n titleFieldId: \"title\",\n layout: DEFAULT_FIELDS.map(field => [field]),\n fields: [\n typeField(),\n titleField(),\n contentField(),\n locationField([locationFolderIdField()]),\n dataField(params?.fields),\n tagsField()\n ],\n description: \"ACO - Search record model\",\n isPrivate: true\n };\n};\n"],"mappings":";;;;;;AACA;AAKA,MAAMA,SAAS,GAAG,MACd,IAAAC,kCAAgB,EAAC;EACbC,KAAK,EAAE,MAAM;EACbC,IAAI,EAAE,MAAM;EACZC,UAAU,EAAE,CACR;IACIC,IAAI,EAAE,UAAU;IAChBC,OAAO,EAAE;EACb,CAAC;AAET,CAAC,CAAC;AAEN,MAAMC,UAAU,GAAG,MACf,IAAAN,kCAAgB,EAAC;EACbC,KAAK,EAAE,OAAO;EACdC,IAAI,EAAE,MAAM;EACZC,UAAU,EAAE,CACR;IACIC,IAAI,EAAE,UAAU;IAChBC,OAAO,EAAE;EACb,CAAC;AAET,CAAC,CAAC;AAEN,MAAME,YAAY,GAAG,MACjB,IAAAP,kCAAgB,EAAC;EACbC,KAAK,EAAE,SAAS;EAChBC,IAAI,EAAE;AACV,CAAC,CAAC;AAEN,MAAMM,aAAa,GAAIC,MAAuB,IAC1C,IAAAT,kCAAgB,EAAC;EACbC,KAAK,EAAE,UAAU;EACjBC,IAAI,EAAE,QAAQ;EACdQ,cAAc,EAAE,KAAK;EACrBP,UAAU,EAAE,CACR;IACIC,IAAI,EAAE,UAAU;IAChBC,OAAO,EAAE;EACb,CAAC,CACJ;EACDM,QAAQ,EAAE;IACNF;EACJ;AACJ,CAAC,CAAC;AAEN,MAAMG,qBAAqB,GAAG,MAC1B,IAAAZ,kCAAgB,EAAC;EACbC,KAAK,EAAE,WAAW;EAClBC,IAAI,EAAE,MAAM;EACZC,UAAU,EAAE,CACR;IACIC,IAAI,EAAE,UAAU;IAChBC,OAAO,EAAE;EACb,CAAC;AAET,CAAC,CAAC;AAEN,MAAMQ,SAAS,GAAIJ,MAAwB,IAAK;EAC5C,OAAO,IAAAT,kCAAgB,EAAC;IACpBC,KAAK,EAAE,MAAM;IACbC,IAAI,EAAE,QAAQ;IACdQ,cAAc,EAAE,KAAK;IACrBP,UAAU,EAAE,CACR;MACIC,IAAI,EAAE,UAAU;MAChBC,OAAO,EAAE;IACb,CAAC,CACJ;IACDM,QAAQ,EAAE;MACNF;IACJ;EACJ,CAAC,CAAC;AACN,CAAC;AAED,MAAMK,SAAS,GAAG,MACd,IAAAd,kCAAgB,EAAC;EACbC,KAAK,EAAE,MAAM;EACbC,IAAI,EAAE,MAAM;EACZQ,cAAc,EAAE,IAAI;EACpBP,UAAU,EAAE,CACR;IACIC,IAAI,EAAE,UAAU;IAChBC,OAAO,EAAE;EACb,CAAC;AAET,CAAC,CAAC;AAEC,MAAMU,sBAAsB,GAAG,iBAAiB;AAAC;AAMjD,MAAMC,cAAc,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,CAAC;AAAC;AAEhF,MAAMC,2BAA2B,GACpCC,MAA0C,IACZ;EAC9B,OAAO;IACHd,IAAI,EAAE,qBAAqB;IAC3Be,OAAO,EAAEJ,sBAAsB;IAC/BK,YAAY,EAAE,OAAO;IACrBC,MAAM,EAAEL,cAAc,CAACM,GAAG,CAACC,KAAK,IAAI,CAACA,KAAK,CAAC,CAAC;IAC5Cd,MAAM,EAAE,CACJV,SAAS,EAAE,EACXO,UAAU,EAAE,EACZC,YAAY,EAAE,EACdC,aAAa,CAAC,CAACI,qBAAqB,EAAE,CAAC,CAAC,EACxCC,SAAS,CAACK,MAAM,aAANA,MAAM,uBAANA,MAAM,CAAET,MAAM,CAAC,EACzBK,SAAS,EAAE,CACd;IACDU,WAAW,EAAE,2BAA2B;IACxCC,SAAS,EAAE;EACf,CAAC;AACL,CAAC;AAAC"}
@@ -0,0 +1,3 @@
1
+ import { CreateAcoStorageOperationsParams } from "../createAcoStorageOperations";
2
+ import { AcoSearchRecordStorageOperations } from "./record.types";
3
+ export declare const createSearchRecordOperations: (params: CreateAcoStorageOperationsParams) => AcoSearchRecordStorageOperations;
@@ -0,0 +1,150 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.createSearchRecordOperations = void 0;
8
+ var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
9
+ var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
10
+ var _error = _interopRequireDefault(require("@webiny/error"));
11
+ var _getFieldValues = require("../utils/getFieldValues");
12
+ var _acoRecordId = require("../utils/acoRecordId");
13
+ var _record = require("./record.model");
14
+ const _excluded = ["tags", "data"];
15
+ const createSearchRecordOperations = params => {
16
+ const {
17
+ cms,
18
+ security
19
+ } = params;
20
+ const getRecord = async (model, id) => {
21
+ /**
22
+ * The record "id" has been passed by the original entry.
23
+ * We need to retrieve it via `cms.storageOperations.entries.getLatestByIds()` method and return the first one.
24
+ */
25
+ const revisions = await cms.storageOperations.entries.getLatestByIds(model, {
26
+ ids: [(0, _acoRecordId.attachAcoRecordPrefix)(id)]
27
+ });
28
+ if (revisions.length === 0) {
29
+ throw new _error.default("Record not found.", "NOT_FOUND", {
30
+ id
31
+ });
32
+ }
33
+ return revisions[0];
34
+ };
35
+ return {
36
+ async getRecord(model, {
37
+ id
38
+ }) {
39
+ return security.withoutAuthorization(async () => {
40
+ const record = await getRecord(model, id);
41
+ return (0, _getFieldValues.getRecordFieldValues)(record);
42
+ });
43
+ },
44
+ listRecords(model, params) {
45
+ return security.withoutAuthorization(async () => {
46
+ const {
47
+ sort,
48
+ where
49
+ } = params;
50
+ const [entries, meta] = await cms.listLatestEntries(model, (0, _objectSpread2.default)((0, _objectSpread2.default)({}, params), {}, {
51
+ sort,
52
+ where: (0, _objectSpread2.default)({}, where || {})
53
+ }));
54
+ return [entries.map(entry => (0, _getFieldValues.getRecordFieldValues)(entry)), meta];
55
+ });
56
+ },
57
+ listTags(model, params) {
58
+ return security.withoutAuthorization(async () => {
59
+ const {
60
+ where
61
+ } = params;
62
+ const items = await cms.getUniqueFieldValues(model, {
63
+ where: (0, _objectSpread2.default)((0, _objectSpread2.default)({}, where || {}), {}, {
64
+ latest: true
65
+ }),
66
+ fieldId: "tags"
67
+ });
68
+ const meta = {
69
+ hasMoreItems: false,
70
+ totalCount: items.length,
71
+ cursor: null
72
+ };
73
+ const tags = items.map(item => {
74
+ return {
75
+ tag: item.value,
76
+ count: item.count
77
+ };
78
+ });
79
+ return [tags, meta];
80
+ });
81
+ },
82
+ createRecord(model, {
83
+ data: SearchRecordData
84
+ }) {
85
+ return security.withoutAuthorization(async () => {
86
+ const {
87
+ tags = [],
88
+ data = {}
89
+ } = SearchRecordData,
90
+ rest = (0, _objectWithoutProperties2.default)(SearchRecordData, _excluded);
91
+ const entry = await cms.createEntry(model, (0, _objectSpread2.default)((0, _objectSpread2.default)({
92
+ tags,
93
+ data
94
+ }, rest), {}, {
95
+ id: (0, _acoRecordId.attachAcoRecordPrefix)(rest.id)
96
+ }));
97
+ return (0, _getFieldValues.getRecordFieldValues)(entry);
98
+ });
99
+ },
100
+ updateRecord(model, {
101
+ id,
102
+ data
103
+ }) {
104
+ return security.withoutAuthorization(async () => {
105
+ const original = await this.getRecord(model, {
106
+ id
107
+ });
108
+ const input = (0, _objectSpread2.default)((0, _objectSpread2.default)({}, original), data);
109
+ const entry = await cms.updateEntry(model, (0, _acoRecordId.attachAcoRecordPrefix)(original.id), input);
110
+ return (0, _getFieldValues.getRecordFieldValues)(entry);
111
+ });
112
+ },
113
+ moveRecord(model, params) {
114
+ const {
115
+ id,
116
+ folderId
117
+ } = params;
118
+ return security.withoutAuthorization(async () => {
119
+ const original = await this.getRecord(model, {
120
+ id
121
+ });
122
+ const input = {
123
+ wbyAco_location: {
124
+ folderId
125
+ }
126
+ };
127
+ /**
128
+ * We only apply the location to the search record model as we do not want to override the users data.
129
+ */
130
+ const lookFor = `${_record.SEARCH_RECORD_MODEL_ID}-`;
131
+ if (model.modelId.substring(0, lookFor.length) === lookFor) {
132
+ input.location = {
133
+ folderId
134
+ };
135
+ }
136
+ await cms.updateEntry(model, (0, _acoRecordId.attachAcoRecordPrefix)(original.id), input);
137
+ return true;
138
+ });
139
+ },
140
+ deleteRecord(model, {
141
+ id
142
+ }) {
143
+ return security.withoutAuthorization(async () => {
144
+ await cms.deleteEntry(model, (0, _acoRecordId.attachAcoRecordPrefix)(id));
145
+ return true;
146
+ });
147
+ }
148
+ };
149
+ };
150
+ exports.createSearchRecordOperations = createSearchRecordOperations;
@@ -0,0 +1 @@
1
+ {"version":3,"names":["createSearchRecordOperations","params","cms","security","getRecord","model","id","revisions","storageOperations","entries","getLatestByIds","ids","attachAcoRecordPrefix","length","WebinyError","withoutAuthorization","record","getRecordFieldValues","listRecords","sort","where","meta","listLatestEntries","map","entry","listTags","items","getUniqueFieldValues","latest","fieldId","hasMoreItems","totalCount","cursor","tags","item","tag","value","count","createRecord","data","SearchRecordData","rest","createEntry","updateRecord","original","input","updateEntry","moveRecord","folderId","wbyAco_location","lookFor","SEARCH_RECORD_MODEL_ID","modelId","substring","location","deleteRecord","deleteEntry"],"sources":["record.so.ts"],"sourcesContent":["import WebinyError from \"@webiny/error\";\nimport { CreateAcoStorageOperationsParams } from \"~/createAcoStorageOperations\";\nimport { getRecordFieldValues } from \"~/utils/getFieldValues\";\nimport { AcoSearchRecordStorageOperations } from \"./record.types\";\nimport { CmsModel, UpdateCmsEntryInput } from \"@webiny/api-headless-cms/types\";\nimport { attachAcoRecordPrefix } from \"~/utils/acoRecordId\";\nimport { SEARCH_RECORD_MODEL_ID } from \"~/record/record.model\";\n\nexport const createSearchRecordOperations = (\n params: CreateAcoStorageOperationsParams\n): AcoSearchRecordStorageOperations => {\n const { cms, security } = params;\n\n const getRecord = async (model: CmsModel, id: string) => {\n /**\n * The record \"id\" has been passed by the original entry.\n * We need to retrieve it via `cms.storageOperations.entries.getLatestByIds()` method and return the first one.\n */\n const revisions = await cms.storageOperations.entries.getLatestByIds(model, {\n ids: [attachAcoRecordPrefix(id)]\n });\n\n if (revisions.length === 0) {\n throw new WebinyError(\"Record not found.\", \"NOT_FOUND\", {\n id\n });\n }\n\n return revisions[0];\n };\n\n return {\n async getRecord(model, { id }) {\n return security.withoutAuthorization(async () => {\n const record = await getRecord(model, id);\n return getRecordFieldValues(record);\n });\n },\n listRecords(model, params) {\n return security.withoutAuthorization(async () => {\n const { sort, where } = params;\n\n const [entries, meta] = await cms.listLatestEntries(model, {\n ...params,\n sort,\n where: {\n ...(where || {})\n }\n });\n\n return [entries.map(entry => getRecordFieldValues(entry)), meta];\n });\n },\n listTags(model, params) {\n return security.withoutAuthorization(async () => {\n const { where } = params;\n\n const items = await cms.getUniqueFieldValues(model, {\n where: {\n ...(where || {}),\n latest: true\n },\n fieldId: \"tags\"\n });\n\n const meta = {\n hasMoreItems: false,\n totalCount: items.length,\n cursor: null\n };\n\n const tags = items.map(item => {\n return {\n tag: item.value,\n count: item.count\n };\n });\n\n return [tags, meta];\n });\n },\n createRecord(model, { data: SearchRecordData }) {\n return security.withoutAuthorization(async () => {\n const { tags = [], data = {}, ...rest } = SearchRecordData;\n const entry = await cms.createEntry(model, {\n tags,\n data,\n ...rest,\n id: attachAcoRecordPrefix(rest.id)\n });\n\n return getRecordFieldValues(entry);\n });\n },\n updateRecord(this: AcoSearchRecordStorageOperations, model, { id, data }) {\n return security.withoutAuthorization(async () => {\n const original = await this.getRecord(model, { id });\n\n const input = {\n ...original,\n ...data\n };\n\n const entry = await cms.updateEntry(\n model,\n attachAcoRecordPrefix(original.id),\n input\n );\n\n return getRecordFieldValues(entry);\n });\n },\n moveRecord(this: AcoSearchRecordStorageOperations, model, params) {\n const { id, folderId } = params;\n return security.withoutAuthorization(async () => {\n const original = await this.getRecord(model, { id });\n\n const input: UpdateCmsEntryInput = {\n wbyAco_location: {\n folderId\n }\n };\n /**\n * We only apply the location to the search record model as we do not want to override the users data.\n */\n const lookFor = `${SEARCH_RECORD_MODEL_ID}-`;\n if (model.modelId.substring(0, lookFor.length) === lookFor) {\n input.location = {\n folderId\n };\n }\n\n await cms.updateEntry(model, attachAcoRecordPrefix(original.id), input);\n\n return true;\n });\n },\n deleteRecord(model, { id }) {\n return security.withoutAuthorization(async () => {\n await cms.deleteEntry(model, attachAcoRecordPrefix(id));\n return true;\n });\n }\n };\n};\n"],"mappings":"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"}
@@ -0,0 +1,143 @@
1
+ import { AcoBaseFields, ListMeta } from "../types";
2
+ import { Topic } from "@webiny/pubsub/types";
3
+ import { CmsModel } from "@webiny/api-headless-cms/types";
4
+ export declare type GenericSearchData = {
5
+ [key: string]: any;
6
+ };
7
+ export interface Location {
8
+ folderId: string;
9
+ }
10
+ export interface SearchRecord<TData extends GenericSearchData = GenericSearchData> extends AcoBaseFields {
11
+ type: string;
12
+ title: string;
13
+ content?: string;
14
+ location: Location;
15
+ data: TData;
16
+ tags: string[];
17
+ }
18
+ export interface SearchRecordTag {
19
+ tag: string;
20
+ count: number;
21
+ }
22
+ export interface ListSearchRecordsWhere {
23
+ type: string;
24
+ location?: {
25
+ folderId: string;
26
+ };
27
+ tags_in?: string[];
28
+ tags_startsWith?: string;
29
+ tags_not_startsWith?: string;
30
+ }
31
+ export interface ListSearchRecordsParams {
32
+ where?: ListSearchRecordsWhere;
33
+ search?: string;
34
+ sort?: string[];
35
+ limit?: number;
36
+ after?: string | null;
37
+ }
38
+ export declare type CreateSearchRecordParams<TData> = Pick<SearchRecord<TData>, "id" | "title" | "content" | "type" | "location" | "data" | "tags">;
39
+ export interface UpdateSearchRecordParams<TData extends GenericSearchData> {
40
+ title?: string;
41
+ content?: string;
42
+ location?: Location;
43
+ data?: TData;
44
+ tags?: string[];
45
+ }
46
+ export interface DeleteSearchRecordParams {
47
+ id: string;
48
+ }
49
+ export interface ListSearchRecordTagsWhere {
50
+ type: string;
51
+ }
52
+ export interface ListSearchRecordTagsParams {
53
+ where?: ListSearchRecordTagsWhere;
54
+ }
55
+ export interface StorageOperationsGetSearchRecordParams {
56
+ id: string;
57
+ }
58
+ export declare type StorageOperationsListSearchRecordsParams = ListSearchRecordsParams;
59
+ export declare type StorageOperationsListSearchRecordTagsParams = ListSearchRecordTagsParams;
60
+ export interface StorageOperationsCreateSearchRecordParams<TData extends GenericSearchData = GenericSearchData> {
61
+ data: CreateSearchRecordParams<TData>;
62
+ }
63
+ export interface StorageOperationsUpdateSearchRecordParams<TData extends GenericSearchData = GenericSearchData> {
64
+ id: string;
65
+ data: UpdateSearchRecordParams<TData>;
66
+ }
67
+ export interface StorageOperationsMoveSearchRecordParams {
68
+ id: string;
69
+ folderId?: string | null;
70
+ }
71
+ export declare type StorageOperationsDeleteSearchRecordParams = DeleteSearchRecordParams;
72
+ export interface OnSearchRecordBeforeCreateTopicParams<TData extends GenericSearchData = GenericSearchData> {
73
+ model: CmsModel;
74
+ input: CreateSearchRecordParams<TData>;
75
+ }
76
+ export interface OnSearchRecordAfterCreateTopicParams<TData extends GenericSearchData = GenericSearchData> {
77
+ model: CmsModel;
78
+ record: SearchRecord<TData>;
79
+ }
80
+ export interface OnSearchRecordBeforeUpdateTopicParams<TData extends GenericSearchData = GenericSearchData> {
81
+ model: CmsModel;
82
+ original: SearchRecord<TData>;
83
+ input: Record<string, any>;
84
+ }
85
+ export interface OnSearchRecordBeforeMoveTopicParams<TData extends GenericSearchData = GenericSearchData> {
86
+ model: CmsModel;
87
+ original: SearchRecord<TData>;
88
+ folderId?: string | null;
89
+ }
90
+ export interface OnSearchRecordAfterMoveTopicParams<TData extends GenericSearchData = GenericSearchData> {
91
+ model: CmsModel;
92
+ original: SearchRecord<TData>;
93
+ folderId?: string | null;
94
+ }
95
+ export interface OnSearchRecordAfterUpdateTopicParams<TData extends GenericSearchData = GenericSearchData> {
96
+ model: CmsModel;
97
+ original: SearchRecord<TData>;
98
+ record: SearchRecord<TData>;
99
+ input: Record<string, any>;
100
+ }
101
+ export interface OnSearchRecordBeforeDeleteTopicParams<TData extends GenericSearchData = GenericSearchData> {
102
+ model: CmsModel;
103
+ record: SearchRecord<TData>;
104
+ }
105
+ export interface OnSearchRecordAfterDeleteTopicParams<TData extends GenericSearchData = GenericSearchData> {
106
+ model: CmsModel;
107
+ record: SearchRecord<TData>;
108
+ }
109
+ export interface AcoSearchRecordCrudBase {
110
+ get<TData extends GenericSearchData = GenericSearchData>(id: string): Promise<SearchRecord<TData>>;
111
+ list<TData extends GenericSearchData = GenericSearchData>(params: ListSearchRecordsParams): Promise<[SearchRecord<TData>[], ListMeta]>;
112
+ listTags(params: ListSearchRecordTagsParams): Promise<[SearchRecordTag[], ListMeta]>;
113
+ create<TData extends GenericSearchData = GenericSearchData>(data: CreateSearchRecordParams<TData>): Promise<SearchRecord<TData>>;
114
+ update<TData extends GenericSearchData = GenericSearchData>(id: string, data: UpdateSearchRecordParams<TData>): Promise<SearchRecord<TData>>;
115
+ move(id: string, folderId?: string | null): Promise<boolean>;
116
+ delete(id: string): Promise<Boolean>;
117
+ }
118
+ export interface AcoSearchRecordCrud extends Omit<AcoSearchRecordCrudBase, "get" | "list" | "create" | "update" | "delete" | "listTags" | "move"> {
119
+ get<TData>(model: CmsModel, id: string): Promise<SearchRecord<TData>>;
120
+ list<TData>(model: CmsModel, params: ListSearchRecordsParams): Promise<[SearchRecord<TData>[], ListMeta]>;
121
+ listTags(model: CmsModel, params: ListSearchRecordTagsParams): Promise<[SearchRecordTag[], ListMeta]>;
122
+ create<TData>(model: CmsModel, data: CreateSearchRecordParams<TData>): Promise<SearchRecord<TData>>;
123
+ update<TData>(model: CmsModel, id: string, data: UpdateSearchRecordParams<TData>): Promise<SearchRecord<TData>>;
124
+ move(model: CmsModel, id: string, folderId?: string | null): Promise<boolean>;
125
+ delete(model: CmsModel, id: string): Promise<Boolean>;
126
+ onSearchRecordBeforeCreate: Topic<OnSearchRecordBeforeCreateTopicParams>;
127
+ onSearchRecordAfterCreate: Topic<OnSearchRecordAfterCreateTopicParams>;
128
+ onSearchRecordBeforeUpdate: Topic<OnSearchRecordBeforeUpdateTopicParams>;
129
+ onSearchRecordAfterUpdate: Topic<OnSearchRecordAfterUpdateTopicParams>;
130
+ onSearchRecordBeforeMove: Topic<OnSearchRecordBeforeMoveTopicParams>;
131
+ onSearchRecordAfterMove: Topic<OnSearchRecordAfterMoveTopicParams>;
132
+ onSearchRecordBeforeDelete: Topic<OnSearchRecordBeforeDeleteTopicParams>;
133
+ onSearchRecordAfterDelete: Topic<OnSearchRecordAfterDeleteTopicParams>;
134
+ }
135
+ export interface AcoSearchRecordStorageOperations {
136
+ getRecord<TData extends GenericSearchData = GenericSearchData>(model: CmsModel, params: StorageOperationsGetSearchRecordParams): Promise<SearchRecord<TData>>;
137
+ listRecords<TData extends GenericSearchData = GenericSearchData>(model: CmsModel, params: StorageOperationsListSearchRecordsParams): Promise<[SearchRecord<TData>[], ListMeta]>;
138
+ listTags(model: CmsModel, params: StorageOperationsListSearchRecordTagsParams): Promise<[SearchRecordTag[], ListMeta]>;
139
+ createRecord<TData extends GenericSearchData = GenericSearchData>(model: CmsModel, params: StorageOperationsCreateSearchRecordParams<TData>): Promise<SearchRecord<TData>>;
140
+ updateRecord<TData extends GenericSearchData = GenericSearchData>(model: CmsModel, params: StorageOperationsUpdateSearchRecordParams<TData>): Promise<SearchRecord<TData>>;
141
+ moveRecord(model: CmsModel, params: StorageOperationsMoveSearchRecordParams): Promise<boolean>;
142
+ deleteRecord(model: CmsModel, params: StorageOperationsDeleteSearchRecordParams): Promise<boolean>;
143
+ }
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sources":["record.types.ts"],"sourcesContent":["import { AcoBaseFields, ListMeta } from \"~/types\";\nimport { Topic } from \"@webiny/pubsub/types\";\nimport { CmsModel } from \"@webiny/api-headless-cms/types\";\n\nexport type GenericSearchData = {\n [key: string]: any;\n};\n\nexport interface Location {\n folderId: string;\n}\n\nexport interface SearchRecord<TData extends GenericSearchData = GenericSearchData>\n extends AcoBaseFields {\n type: string;\n title: string;\n content?: string;\n location: Location;\n data: TData;\n tags: string[];\n}\n\nexport interface SearchRecordTag {\n tag: string;\n count: number;\n}\n\nexport interface ListSearchRecordsWhere {\n type: string;\n location?: {\n folderId: string;\n };\n tags_in?: string[];\n tags_startsWith?: string;\n tags_not_startsWith?: string;\n}\n\nexport interface ListSearchRecordsParams {\n where?: ListSearchRecordsWhere;\n search?: string;\n sort?: string[];\n limit?: number;\n after?: string | null;\n}\n\nexport type CreateSearchRecordParams<TData> = Pick<\n SearchRecord<TData>,\n \"id\" | \"title\" | \"content\" | \"type\" | \"location\" | \"data\" | \"tags\"\n>;\n\nexport interface UpdateSearchRecordParams<TData extends GenericSearchData> {\n title?: string;\n content?: string;\n location?: Location;\n data?: TData;\n tags?: string[];\n}\n\nexport interface DeleteSearchRecordParams {\n id: string;\n}\n\nexport interface ListSearchRecordTagsWhere {\n type: string;\n}\n\nexport interface ListSearchRecordTagsParams {\n where?: ListSearchRecordTagsWhere;\n}\n\nexport interface StorageOperationsGetSearchRecordParams {\n id: string;\n}\n\nexport type StorageOperationsListSearchRecordsParams = ListSearchRecordsParams;\nexport type StorageOperationsListSearchRecordTagsParams = ListSearchRecordTagsParams;\n\nexport interface StorageOperationsCreateSearchRecordParams<\n TData extends GenericSearchData = GenericSearchData\n> {\n data: CreateSearchRecordParams<TData>;\n}\n\nexport interface StorageOperationsUpdateSearchRecordParams<\n TData extends GenericSearchData = GenericSearchData\n> {\n id: string;\n data: UpdateSearchRecordParams<TData>;\n}\n\nexport interface StorageOperationsMoveSearchRecordParams {\n id: string;\n folderId?: string | null;\n}\n\nexport type StorageOperationsDeleteSearchRecordParams = DeleteSearchRecordParams;\n\nexport interface OnSearchRecordBeforeCreateTopicParams<\n TData extends GenericSearchData = GenericSearchData\n> {\n model: CmsModel;\n input: CreateSearchRecordParams<TData>;\n}\n\nexport interface OnSearchRecordAfterCreateTopicParams<\n TData extends GenericSearchData = GenericSearchData\n> {\n model: CmsModel;\n record: SearchRecord<TData>;\n}\n\nexport interface OnSearchRecordBeforeUpdateTopicParams<\n TData extends GenericSearchData = GenericSearchData\n> {\n model: CmsModel;\n original: SearchRecord<TData>;\n input: Record<string, any>;\n}\n\nexport interface OnSearchRecordBeforeMoveTopicParams<\n TData extends GenericSearchData = GenericSearchData\n> {\n model: CmsModel;\n original: SearchRecord<TData>;\n folderId?: string | null;\n}\n\nexport interface OnSearchRecordAfterMoveTopicParams<\n TData extends GenericSearchData = GenericSearchData\n> {\n model: CmsModel;\n original: SearchRecord<TData>;\n folderId?: string | null;\n}\n\nexport interface OnSearchRecordAfterUpdateTopicParams<\n TData extends GenericSearchData = GenericSearchData\n> {\n model: CmsModel;\n original: SearchRecord<TData>;\n record: SearchRecord<TData>;\n input: Record<string, any>;\n}\n\nexport interface OnSearchRecordBeforeDeleteTopicParams<\n TData extends GenericSearchData = GenericSearchData\n> {\n model: CmsModel;\n record: SearchRecord<TData>;\n}\n\nexport interface OnSearchRecordAfterDeleteTopicParams<\n TData extends GenericSearchData = GenericSearchData\n> {\n model: CmsModel;\n record: SearchRecord<TData>;\n}\n\nexport interface AcoSearchRecordCrudBase {\n get<TData extends GenericSearchData = GenericSearchData>(\n id: string\n ): Promise<SearchRecord<TData>>;\n list<TData extends GenericSearchData = GenericSearchData>(\n params: ListSearchRecordsParams\n ): Promise<[SearchRecord<TData>[], ListMeta]>;\n listTags(params: ListSearchRecordTagsParams): Promise<[SearchRecordTag[], ListMeta]>;\n create<TData extends GenericSearchData = GenericSearchData>(\n data: CreateSearchRecordParams<TData>\n ): Promise<SearchRecord<TData>>;\n update<TData extends GenericSearchData = GenericSearchData>(\n id: string,\n data: UpdateSearchRecordParams<TData>\n ): Promise<SearchRecord<TData>>;\n move(id: string, folderId?: string | null): Promise<boolean>;\n delete(id: string): Promise<Boolean>;\n}\n\nexport interface AcoSearchRecordCrud\n extends Omit<\n AcoSearchRecordCrudBase,\n \"get\" | \"list\" | \"create\" | \"update\" | \"delete\" | \"listTags\" | \"move\"\n > {\n get<TData>(model: CmsModel, id: string): Promise<SearchRecord<TData>>;\n list<TData>(\n model: CmsModel,\n params: ListSearchRecordsParams\n ): Promise<[SearchRecord<TData>[], ListMeta]>;\n listTags(\n model: CmsModel,\n params: ListSearchRecordTagsParams\n ): Promise<[SearchRecordTag[], ListMeta]>;\n create<TData>(\n model: CmsModel,\n data: CreateSearchRecordParams<TData>\n ): Promise<SearchRecord<TData>>;\n update<TData>(\n model: CmsModel,\n id: string,\n data: UpdateSearchRecordParams<TData>\n ): Promise<SearchRecord<TData>>;\n move(model: CmsModel, id: string, folderId?: string | null): Promise<boolean>;\n delete(model: CmsModel, id: string): Promise<Boolean>;\n onSearchRecordBeforeCreate: Topic<OnSearchRecordBeforeCreateTopicParams>;\n onSearchRecordAfterCreate: Topic<OnSearchRecordAfterCreateTopicParams>;\n onSearchRecordBeforeUpdate: Topic<OnSearchRecordBeforeUpdateTopicParams>;\n onSearchRecordAfterUpdate: Topic<OnSearchRecordAfterUpdateTopicParams>;\n onSearchRecordBeforeMove: Topic<OnSearchRecordBeforeMoveTopicParams>;\n onSearchRecordAfterMove: Topic<OnSearchRecordAfterMoveTopicParams>;\n onSearchRecordBeforeDelete: Topic<OnSearchRecordBeforeDeleteTopicParams>;\n onSearchRecordAfterDelete: Topic<OnSearchRecordAfterDeleteTopicParams>;\n}\n\nexport interface AcoSearchRecordStorageOperations {\n getRecord<TData extends GenericSearchData = GenericSearchData>(\n model: CmsModel,\n params: StorageOperationsGetSearchRecordParams\n ): Promise<SearchRecord<TData>>;\n listRecords<TData extends GenericSearchData = GenericSearchData>(\n model: CmsModel,\n params: StorageOperationsListSearchRecordsParams\n ): Promise<[SearchRecord<TData>[], ListMeta]>;\n listTags(\n model: CmsModel,\n params: StorageOperationsListSearchRecordTagsParams\n ): Promise<[SearchRecordTag[], ListMeta]>;\n createRecord<TData extends GenericSearchData = GenericSearchData>(\n model: CmsModel,\n params: StorageOperationsCreateSearchRecordParams<TData>\n ): Promise<SearchRecord<TData>>;\n updateRecord<TData extends GenericSearchData = GenericSearchData>(\n model: CmsModel,\n params: StorageOperationsUpdateSearchRecordParams<TData>\n ): Promise<SearchRecord<TData>>;\n moveRecord(model: CmsModel, params: StorageOperationsMoveSearchRecordParams): Promise<boolean>;\n deleteRecord(\n model: CmsModel,\n params: StorageOperationsDeleteSearchRecordParams\n ): Promise<boolean>;\n}\n"],"mappings":""}