@ruiapp/rapid-core 0.1.68 → 0.1.70

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.
package/dist/index.js CHANGED
@@ -2638,7 +2638,7 @@ async function createEntity(server, dataAccessor, options, plugin) {
2638
2638
  targetRow[property.targetIdColumnName] = targetEntityId;
2639
2639
  }
2640
2640
  }
2641
- else if (lodash.isNumber(fieldValue)) {
2641
+ else if (lodash.isNumber(fieldValue) || lodash.isString(fieldValue)) {
2642
2642
  // fieldValue is id;
2643
2643
  const targetEntityId = fieldValue;
2644
2644
  const targetEntity = await findById(server, targetDataAccessor, {
@@ -2849,7 +2849,7 @@ async function updateEntityById(server, dataAccessor, options, plugin) {
2849
2849
  targetRow[property.targetIdColumnName] = targetEntityId;
2850
2850
  }
2851
2851
  }
2852
- else if (lodash.isNumber(fieldValue)) {
2852
+ else if (lodash.isNumber(fieldValue) || lodash.isString(fieldValue)) {
2853
2853
  // fieldValue is id;
2854
2854
  const targetEntityId = fieldValue;
2855
2855
  const targetEntity = await findById(server, targetDataAccessor, {
@@ -3348,7 +3348,8 @@ class RapidServer {
3348
3348
  }
3349
3349
  async emitEvent(event) {
3350
3350
  const { eventName, payload, sender, routeContext: routerContext } = event;
3351
- this.#logger.debug(`Emitting '${eventName}' event.`, { eventName, payload });
3351
+ this.#logger.debug(`Emitting '${eventName}' event.`, { eventName });
3352
+ this.#logger.verbose(`Event payload: `, { payload });
3352
3353
  await this.#eventManager.emit(eventName, sender, payload, routerContext);
3353
3354
  // TODO: should move this logic into metaManager
3354
3355
  // if (
@@ -6243,12 +6244,14 @@ class SettingService {
6243
6244
  ],
6244
6245
  });
6245
6246
  if (settingItem) {
6246
- await this.#systemSettingItemManager.updateEntityById({
6247
- id: settingItem.id,
6248
- entityToSave: {
6249
- value,
6250
- },
6251
- });
6247
+ if (settingItem.value !== value) {
6248
+ await this.#systemSettingItemManager.updateEntityById({
6249
+ id: settingItem.id,
6250
+ entityToSave: {
6251
+ value,
6252
+ },
6253
+ });
6254
+ }
6252
6255
  }
6253
6256
  else {
6254
6257
  await this.#systemSettingItemManager.createEntity({
@@ -3,6 +3,10 @@ import { SystemSettingItem, UserSettingItem } from "./SettingPluginTypes";
3
3
  export interface GetSystemSettingValuesInput {
4
4
  groupCode: string;
5
5
  }
6
+ export interface SetSystemSettingValuesInput {
7
+ groupCode: string;
8
+ values: Record<string, any>;
9
+ }
6
10
  export interface GetUserSettingValuesInput {
7
11
  groupCode: string;
8
12
  }
@@ -0,0 +1,7 @@
1
+ import { ActionHandlerContext } from "../../../core/actionHandler";
2
+ import { RapidPlugin } from "../../../core/server";
3
+ export interface SetSystemSettingValuesOptions {
4
+ groupCode: string;
5
+ }
6
+ export declare const code = "setSystemSettingValues";
7
+ export declare function handler(plugin: RapidPlugin, ctx: ActionHandlerContext, options: SetSystemSettingValuesOptions): Promise<void>;
@@ -3,7 +3,7 @@ declare const _default: {
3
3
  name: string;
4
4
  code: string;
5
5
  type: "RESTful";
6
- method: "POST";
6
+ method: "GET";
7
7
  endpoint: string;
8
8
  actions: {
9
9
  code: string;
@@ -0,0 +1,12 @@
1
+ declare const _default: {
2
+ namespace: string;
3
+ name: string;
4
+ code: string;
5
+ type: "RESTful";
6
+ method: "PATCH";
7
+ endpoint: string;
8
+ actions: {
9
+ code: string;
10
+ }[];
11
+ };
12
+ export default _default;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ruiapp/rapid-core",
3
- "version": "0.1.68",
3
+ "version": "0.1.70",
4
4
  "description": "",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -22,7 +22,7 @@ import { mapDbRowToEntity, mapEntityToDbRow } from "./entityMapper";
22
22
  import { mapPropertyNameToColumnName } from "./propertyMapper";
23
23
  import { IRpdServer, RapidPlugin } from "~/core/server";
24
24
  import { getEntityPartChanges } from "~/helpers/entityHelpers";
25
- import { filter, find, first, forEach, isArray, isNumber, isObject, keys, map, reject, uniq } from "lodash";
25
+ import { filter, find, first, forEach, isArray, isNumber, isObject, isString, keys, map, reject, uniq } from "lodash";
26
26
  import { getEntityPropertiesIncludingBase, getEntityProperty, getEntityPropertyByCode, isRelationProperty } from "../helpers/metaHelper";
27
27
  import { ColumnSelectOptions, CountRowOptions, FindRowOptions, FindRowOrderByOptions, RowFilterOptions } from "./dataAccessTypes";
28
28
  import { newEntityOperationError } from "~/utilities/errorUtility";
@@ -709,7 +709,7 @@ async function createEntity(server: IRpdServer, dataAccessor: IRpdDataAccessor,
709
709
  newEntityOneRelationProps[property.code] = targetEntity;
710
710
  targetRow[property.targetIdColumnName!] = targetEntityId;
711
711
  }
712
- } else if (isNumber(fieldValue)) {
712
+ } else if (isNumber(fieldValue) || isString(fieldValue)) {
713
713
  // fieldValue is id;
714
714
  const targetEntityId = fieldValue;
715
715
  const targetEntity = await findById(server, targetDataAccessor, {
@@ -942,7 +942,7 @@ async function updateEntityById(server: IRpdServer, dataAccessor: IRpdDataAccess
942
942
  updatedEntityOneRelationProps[property.code] = targetEntity;
943
943
  targetRow[property.targetIdColumnName!] = targetEntityId;
944
944
  }
945
- } else if (isNumber(fieldValue)) {
945
+ } else if (isNumber(fieldValue) || isString(fieldValue)) {
946
946
  // fieldValue is id;
947
947
  const targetEntityId = fieldValue;
948
948
  const targetEntity = await findById(server, targetDataAccessor, {
@@ -6,6 +6,11 @@ export interface GetSystemSettingValuesInput {
6
6
  groupCode: string;
7
7
  }
8
8
 
9
+ export interface SetSystemSettingValuesInput {
10
+ groupCode: string;
11
+ values: Record<string, any>;
12
+ }
13
+
9
14
  export interface GetUserSettingValuesInput {
10
15
  groupCode: string;
11
16
  }
@@ -80,12 +85,14 @@ export default class SettingService {
80
85
  });
81
86
 
82
87
  if (settingItem) {
83
- await this.#systemSettingItemManager.updateEntityById({
84
- id: settingItem.id,
85
- entityToSave: {
86
- value,
87
- },
88
- });
88
+ if (settingItem.value !== value) {
89
+ await this.#systemSettingItemManager.updateEntityById({
90
+ id: settingItem.id,
91
+ entityToSave: {
92
+ value,
93
+ },
94
+ });
95
+ }
89
96
  } else {
90
97
  await this.#systemSettingItemManager.createEntity({
91
98
  entity: {
@@ -0,0 +1,30 @@
1
+ import { ActionHandlerContext } from "~/core/actionHandler";
2
+ import { RapidPlugin } from "~/core/server";
3
+ import SettingService, { SetSystemSettingValuesInput } from "../SettingService";
4
+
5
+ export interface SetSystemSettingValuesOptions {
6
+ groupCode: string;
7
+ }
8
+
9
+ export const code = "setSystemSettingValues";
10
+
11
+ export async function handler(plugin: RapidPlugin, ctx: ActionHandlerContext, options: SetSystemSettingValuesOptions) {
12
+ const { server, routerContext } = ctx;
13
+ const { response } = routerContext;
14
+
15
+ const input: SetSystemSettingValuesInput = ctx.input;
16
+
17
+ if (options?.groupCode) {
18
+ input.groupCode = options.groupCode;
19
+ }
20
+
21
+ if (!input.groupCode) {
22
+ throw new Error(`Group code is required when setting system setting values.`);
23
+ }
24
+
25
+ const settingService = server.getService<SettingService>("settingService");
26
+
27
+ await settingService.setSystemSettingValues(input.groupCode, input.values);
28
+
29
+ ctx.output = {};
30
+ }
@@ -0,0 +1,15 @@
1
+ import { RpdRoute } from "~/types";
2
+
3
+ export default {
4
+ namespace: "svc",
5
+ name: "svc.setSystemSettingValues",
6
+ code: "svc.setSystemSettingValues",
7
+ type: "RESTful",
8
+ method: "PATCH",
9
+ endpoint: "/svc/systemSettingValues",
10
+ actions: [
11
+ {
12
+ code: "setSystemSettingValues",
13
+ },
14
+ ],
15
+ } satisfies RpdRoute;
package/src/server.ts CHANGED
@@ -259,7 +259,8 @@ export class RapidServer implements IRpdServer {
259
259
 
260
260
  async emitEvent<TEventName extends keyof RpdServerEventTypes>(event: EmitServerEventOptions<TEventName>) {
261
261
  const { eventName, payload, sender, routeContext: routerContext } = event;
262
- this.#logger.debug(`Emitting '${eventName}' event.`, { eventName, payload });
262
+ this.#logger.debug(`Emitting '${eventName}' event.`, { eventName });
263
+ this.#logger.verbose(`Event payload: `, { payload });
263
264
  await this.#eventManager.emit<TEventName>(eventName, sender, payload as any, routerContext);
264
265
 
265
266
  // TODO: should move this logic into metaManager