@solidxai/core 0.1.10-beta.23 → 0.1.10-beta.25

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 (67) hide show
  1. package/CLAUDE.md +9 -1
  2. package/dist/dtos/create-model-metadata.dto.d.ts +2 -2
  3. package/dist/dtos/create-model-metadata.dto.d.ts.map +1 -1
  4. package/dist/dtos/create-model-metadata.dto.js +6 -11
  5. package/dist/dtos/create-model-metadata.dto.js.map +1 -1
  6. package/dist/entities/legacy-common-with-id.entity.d.ts +2 -2
  7. package/dist/entities/legacy-common-with-id.entity.d.ts.map +1 -1
  8. package/dist/entities/legacy-common-with-id.entity.js +6 -6
  9. package/dist/entities/legacy-common-with-id.entity.js.map +1 -1
  10. package/dist/entities/legacy-common.entity.d.ts +1 -1
  11. package/dist/entities/legacy-common.entity.d.ts.map +1 -1
  12. package/dist/entities/legacy-common.entity.js +14 -14
  13. package/dist/entities/legacy-common.entity.js.map +1 -1
  14. package/dist/entities/model-metadata.entity.d.ts +2 -2
  15. package/dist/entities/model-metadata.entity.d.ts.map +1 -1
  16. package/dist/entities/model-metadata.entity.js +5 -8
  17. package/dist/entities/model-metadata.entity.js.map +1 -1
  18. package/dist/enums/legacy-table-type.enum.d.ts +6 -0
  19. package/dist/enums/legacy-table-type.enum.d.ts.map +1 -0
  20. package/dist/enums/legacy-table-type.enum.js +10 -0
  21. package/dist/enums/legacy-table-type.enum.js.map +1 -0
  22. package/dist/helpers/model-metadata-helper.service.d.ts +2 -1
  23. package/dist/helpers/model-metadata-helper.service.d.ts.map +1 -1
  24. package/dist/helpers/model-metadata-helper.service.js +4 -3
  25. package/dist/helpers/model-metadata-helper.service.js.map +1 -1
  26. package/dist/index.d.ts +1 -0
  27. package/dist/index.d.ts.map +1 -1
  28. package/dist/index.js +1 -0
  29. package/dist/index.js.map +1 -1
  30. package/dist/seeders/seed-data/solid-core-metadata.json +8 -2
  31. package/dist/seeders/system-fields-seeder.service.js +1 -1
  32. package/dist/seeders/system-fields-seeder.service.js.map +1 -1
  33. package/dist/services/crud-helper.service.d.ts.map +1 -1
  34. package/dist/services/crud-helper.service.js +8 -1
  35. package/dist/services/crud-helper.service.js.map +1 -1
  36. package/dist/services/crud.service.js +14 -12
  37. package/dist/services/crud.service.js.map +1 -1
  38. package/dist/services/mediaStorageProviders/file-s3-storage-provider.js +9 -9
  39. package/dist/services/mediaStorageProviders/file-s3-storage-provider.js.map +1 -1
  40. package/dist/services/model-metadata.service.d.ts +2 -2
  41. package/dist/services/model-metadata.service.d.ts.map +1 -1
  42. package/dist/services/model-metadata.service.js +3 -4
  43. package/dist/services/model-metadata.service.js.map +1 -1
  44. package/dist/services/settings/default-settings-provider.service.d.ts +18 -0
  45. package/dist/services/settings/default-settings-provider.service.d.ts.map +1 -1
  46. package/dist/services/settings/default-settings-provider.service.js +10 -0
  47. package/dist/services/settings/default-settings-provider.service.js.map +1 -1
  48. package/dist/subscribers/model-metadata.subscriber.d.ts.map +1 -1
  49. package/dist/subscribers/model-metadata.subscriber.js +1 -3
  50. package/dist/subscribers/model-metadata.subscriber.js.map +1 -1
  51. package/package.json +1 -1
  52. package/src/dtos/create-model-metadata.dto.ts +5 -9
  53. package/src/entities/legacy-common-with-id.entity.ts +2 -2
  54. package/src/entities/legacy-common.entity.ts +1 -1
  55. package/src/entities/model-metadata.entity.ts +3 -5
  56. package/src/enums/legacy-table-type.enum.ts +5 -0
  57. package/src/helpers/model-metadata-helper.service.ts +4 -3
  58. package/src/index.ts +1 -0
  59. package/src/seeders/seed-data/solid-core-metadata.json +8 -2
  60. package/src/seeders/system-fields-seeder.service.ts +1 -1
  61. package/src/services/crud-helper.service.ts +7 -1
  62. package/src/services/crud.service.ts +15 -15
  63. package/src/services/mediaStorageProviders/file-s3-storage-provider.ts +11 -11
  64. package/src/services/model-metadata.service.ts +6 -8
  65. package/src/services/settings/default-settings-provider.service.ts +10 -0
  66. package/src/subscribers/model-metadata.subscriber.ts +1 -3
  67. package/CURRENT_PROMPT +0 -6
@@ -1,4 +1,4 @@
1
- import { BadRequestException, InternalServerErrorException, NotFoundException } from "@nestjs/common";
1
+ import { BadRequestException, ConflictException, HttpException, InternalServerErrorException, NotFoundException } from "@nestjs/common";
2
2
  import { DiscoveryService, ModuleRef } from "@nestjs/core";
3
3
  import { isArray } from "class-validator";
4
4
  import { CommonEntity } from "../entities/common.entity";
@@ -911,7 +911,7 @@ export class CRUDService<T extends CommonEntity> { // Add two generic value i.e
911
911
  });
912
912
 
913
913
  if (!softDeletedRows) {
914
- throw new Error(ERROR_MESSAGES.NO_SOFT_DELETED_RECORD_FOUND);
914
+ throw new NotFoundException(ERROR_MESSAGES.NO_SOFT_DELETED_RECORD_FOUND);
915
915
  }
916
916
 
917
917
  await this.repo.update(id, {
@@ -921,13 +921,13 @@ export class CRUDService<T extends CommonEntity> { // Add two generic value i.e
921
921
 
922
922
  return { message: SUCCESS_MESSAGES.RECORD_RECOVERED, data: softDeletedRows };
923
923
  } catch (error: any) {
924
- if (error instanceof QueryFailedError) {
925
- if ((error as any).code === '23505') {
926
- throw new Error(ERROR_MESSAGES.CONFLICTING_RECORD_ON_UNARCHIVE);
927
- }
924
+ if (error instanceof QueryFailedError && (error as any).code === '23505') {
925
+ throw new ConflictException(ERROR_MESSAGES.CONFLICTING_RECORD_ON_UNARCHIVE);
928
926
  }
929
-
930
- throw new Error(error);
927
+ if (error instanceof HttpException) {
928
+ throw error;
929
+ }
930
+ throw new InternalServerErrorException(error?.message ?? String(error));
931
931
  }
932
932
  }
933
933
 
@@ -956,7 +956,7 @@ export class CRUDService<T extends CommonEntity> { // Add two generic value i.e
956
956
  });
957
957
 
958
958
  if (softDeletedRows.length === 0) {
959
- throw new Error(ERROR_MESSAGES.NO_SOFT_DELETED_RECORDS_FOUND);
959
+ throw new NotFoundException(ERROR_MESSAGES.NO_SOFT_DELETED_RECORDS_FOUND);
960
960
  }
961
961
 
962
962
  // Recover the specific records by setting deletedAt to null
@@ -967,13 +967,13 @@ export class CRUDService<T extends CommonEntity> { // Add two generic value i.e
967
967
 
968
968
  return { message: SUCCESS_MESSAGES.SELECTED_RECORDS_RECOVERED, recoveredIds: ids };
969
969
  } catch (error: any) {
970
- if (error instanceof QueryFailedError) {
971
- if ((error as any).code === "23505") {
972
- throw new Error(ERROR_MESSAGES.CONFLICTING_RECORD_ON_UNARCHIVE);
973
- }
970
+ if (error instanceof QueryFailedError && (error as any).code === "23505") {
971
+ throw new ConflictException(ERROR_MESSAGES.CONFLICTING_RECORD_ON_UNARCHIVE);
974
972
  }
975
-
976
- throw new Error(error);
973
+ if (error instanceof HttpException) {
974
+ throw error;
975
+ }
976
+ throw new InternalServerErrorException(error?.message ?? String(error));
977
977
  }
978
978
  }
979
979
 
@@ -2,8 +2,8 @@ import { Injectable, Logger } from "@nestjs/common";
2
2
  import { ConfigService } from "@nestjs/config";
3
3
  import { CommonEntity } from "src/entities/common.entity";
4
4
  import { FieldMetadata } from "src/entities/field-metadata.entity";
5
- import { LegacyCommonEntity } from "src/entities/legacy-common.entity";
6
- import { LegacyCommonWithIdEntity } from "src/entities/legacy-common-with-id.entity";
5
+ import { LegacyCommonEntityWithExistingId } from "src/entities/legacy-common.entity";
6
+ import { LegacyCommonEntityWithGeneratedId } from "src/entities/legacy-common-with-id.entity";
7
7
  import { Media } from "src/entities/media.entity";
8
8
  import { MediaStorageProvider } from "src/interfaces";
9
9
  import { DiskFileService, S3FileService } from "src/services/file";
@@ -27,10 +27,10 @@ export class FileS3StorageProvider<T> implements MediaStorageProvider<T> {
27
27
 
28
28
  async retrieve(entity: T, mediaFieldMetadata: FieldMetadata): Promise<Media[]> {
29
29
  const isSupportedEntity = entity instanceof CommonEntity
30
- || entity instanceof LegacyCommonEntity
31
- || entity instanceof LegacyCommonWithIdEntity;
30
+ || entity instanceof LegacyCommonEntityWithExistingId
31
+ || entity instanceof LegacyCommonEntityWithGeneratedId;
32
32
  if (!isSupportedEntity) {
33
- throw new Error("Entity must be an instance of CommonEntity, LegacyCommonEntity or LegacyCommonWithIdEntity"); // FIXME This needs to be handled through generics. e.g T extends CommonEntity
33
+ throw new Error("Entity must be an instance of CommonEntity, LegacyCommonEntityWithExistingId or LegacyCommonEntityWithGeneratedId"); // FIXME This needs to be handled through generics. e.g T extends CommonEntity
34
34
  }
35
35
  // @ts-ignore
36
36
  const media = await this.mediaRepository.findByEntityIdAndFieldIdAndModelMetadataId(entity.id, mediaFieldMetadata.id, mediaFieldMetadata.model.id, ['mediaStorageProviderMetadata']);
@@ -60,10 +60,10 @@ export class FileS3StorageProvider<T> implements MediaStorageProvider<T> {
60
60
 
61
61
  async store(files: Express.Multer.File[], entity: T, mediaFieldMetadata: FieldMetadata): Promise<Media[]> {
62
62
  const isSupportedEntity = entity instanceof CommonEntity
63
- || entity instanceof LegacyCommonEntity
64
- || entity instanceof LegacyCommonWithIdEntity;
63
+ || entity instanceof LegacyCommonEntityWithExistingId
64
+ || entity instanceof LegacyCommonEntityWithGeneratedId;
65
65
  if (!isSupportedEntity) {
66
- throw new Error("Entity must be an instance of CommonEntity, LegacyCommonEntity or LegacyCommonWithIdEntity"); // FIXME This needs to be handled through generics. e.g T extends CommonEntity
66
+ throw new Error("Entity must be an instance of CommonEntity, LegacyCommonEntityWithExistingId or LegacyCommonEntityWithGeneratedId"); // FIXME This needs to be handled through generics. e.g T extends CommonEntity
67
67
  }
68
68
  const result: Media[] = [];
69
69
  const storageProvider = mediaFieldMetadata.mediaStorageProvider;
@@ -102,10 +102,10 @@ export class FileS3StorageProvider<T> implements MediaStorageProvider<T> {
102
102
 
103
103
  async delete(entity: T, mediaFieldMetadata: FieldMetadata): Promise<void> {
104
104
  const isSupportedEntity = entity instanceof CommonEntity
105
- || entity instanceof LegacyCommonEntity
106
- || entity instanceof LegacyCommonWithIdEntity;
105
+ || entity instanceof LegacyCommonEntityWithExistingId
106
+ || entity instanceof LegacyCommonEntityWithGeneratedId;
107
107
  if (!isSupportedEntity) {
108
- throw new Error("Entity must be an instance of CommonEntity, LegacyCommonEntity or LegacyCommonWithIdEntity"); // FIXME This needs to be handled through generics. e.g T extends CommonEntity
108
+ throw new Error("Entity must be an instance of CommonEntity, LegacyCommonEntityWithExistingId or LegacyCommonEntityWithGeneratedId"); // FIXME This needs to be handled through generics. e.g T extends CommonEntity
109
109
  }
110
110
  const storageProvider = mediaFieldMetadata.mediaStorageProvider;
111
111
  const region = this.getEffectiveRegion(storageProvider.region);
@@ -2,17 +2,16 @@ import { BadRequestException, forwardRef, Inject, Injectable, Logger, NotFoundEx
2
2
  import { InjectDataSource } from '@nestjs/typeorm';
3
3
  import * as fs from 'fs/promises'; // Use the Promise-based version of fs for async/await
4
4
  import * as path from 'path';
5
- import { DataSource, EntityManager, In, Repository, SelectQueryBuilder } from 'typeorm';
5
+ import { DataSource, EntityManager, Repository, SelectQueryBuilder } from 'typeorm';
6
6
  import { CreateModelMetadataDto } from '../dtos/create-model-metadata.dto';
7
7
  import { ModelMetadata } from '../entities/model-metadata.entity';
8
8
  import { ModuleMetadata } from '../entities/module-metadata.entity';
9
9
 
10
10
  import { kebabCase } from 'lodash';
11
- import { classify } from '../helpers/string.helper';
12
11
  import { ERROR_MESSAGES } from 'src/constants/error-messages';
13
12
  import { DisallowInProduction } from 'src/decorators/disallow-in-production.decorator';
14
13
  import { SolidFieldType } from 'src/dtos/create-field-metadata.dto';
15
- import { PermissionMetadata } from 'src/entities/permission-metadata.entity';
14
+ import { NavigationDto } from 'src/dtos/navigation.dto';
16
15
  import { ModuleMetadataHelperService } from 'src/helpers/module-metadata-helper.service';
17
16
  import { FieldMetadataRepository } from 'src/repository/field-metadata.repository';
18
17
  import { ModelMetadataRepository } from 'src/repository/model-metadata.repository';
@@ -22,20 +21,20 @@ import { ActionMetadata } from '../entities/action-metadata.entity';
22
21
  import { FieldMetadata } from '../entities/field-metadata.entity';
23
22
  import { MenuItemMetadata } from '../entities/menu-item-metadata.entity';
24
23
  import { ViewMetadata } from '../entities/view-metadata.entity';
24
+ import { CommandService } from '../helpers/command.service';
25
25
  import {
26
26
  REFRESH_MODEL_COMMAND,
27
27
  REMOVE_FIELDS_COMMAND,
28
28
  SchematicService
29
29
  } from '../helpers/schematic.service';
30
- import { CommandService } from '../helpers/command.service';
30
+ import { classify } from '../helpers/string.helper';
31
31
  import { CodeGenerationOptions } from '../interfaces';
32
32
  import { CrudHelperService } from './crud-helper.service';
33
+ import { CRUDService } from './crud.service';
33
34
  import { FieldMetadataService } from './field-metadata.service';
34
35
  import { MediaStorageProviderMetadataService } from './media-storage-provider-metadata.service';
35
36
  import { RoleMetadataService } from './role-metadata.service';
36
- import { NavigationDto } from 'src/dtos/navigation.dto';
37
37
  import { SolidIntrospectService } from './solid-introspect.service';
38
- import { CRUDService } from './crud.service';
39
38
  import { SolidTsMorphService } from './solid-ts-morph.service';
40
39
 
41
40
  @Injectable()
@@ -288,8 +287,7 @@ export class ModelMetadataService {
288
287
  tableName: model.tableName,
289
288
  userKeyFieldUserKey: model.fields.find(field => field.isUserKey)?.name,
290
289
  isChild: model?.isChild,
291
- isLegacyTable: model?.isLegacyTable,
292
- isLegacyTableWithId: model?.isLegacyTableWithId,
290
+ legacyTableType: model?.legacyTableType,
293
291
  parentModelUserKey: model?.parentModel?.singularName,
294
292
  enableAuditTracking: model?.enableAuditTracking,
295
293
  enableSoftDelete: model?.enableSoftDelete,
@@ -363,6 +363,16 @@ const getSolidCoreSettings = (isProd: boolean) =>
363
363
  group: "system-settings",
364
364
  sortOrder: 30,
365
365
  controlType: "shortText",
366
+ },
367
+ {
368
+ moduleName: "solid-core",
369
+ key: "frontendAdminBaseUrl",
370
+ value: process.env.FRONTEND_BASE_URL,
371
+ level: SettingLevel.SystemAdminReadonly,
372
+ label: "Frontend Admin Base URL",
373
+ group: "system-settings",
374
+ sortOrder: 35,
375
+ controlType: "shortText",
366
376
  },
367
377
  {
368
378
  moduleName: "solid-core",
@@ -35,9 +35,7 @@ export class ModelMetadataSubscriber implements EntitySubscriberInterface<ModelM
35
35
 
36
36
 
37
37
  private systemFieldMetadataToBeAdded(event: InsertEvent<ModelMetadata>) {
38
- const isLegacyTable = event.entity.isLegacyTable;
39
- const isLegacyTableWithId = event.entity.isLegacyTableWithId;
40
- const systemFieldsDefaultMetadata = this.modelHelperService.getSystemFieldsMetadata(isLegacyTable, isLegacyTableWithId);
38
+ const systemFieldsDefaultMetadata = this.modelHelperService.getSystemFieldsMetadata(event.entity.legacyTableType);
41
39
  // map and add the model as event.entity for the above metadata
42
40
  const systemFieldsMetadata = systemFieldsDefaultMetadata.map(field => ({
43
41
  ...field,
package/CURRENT_PROMPT DELETED
@@ -1,6 +0,0 @@
1
- Have a look at the generate command in the control plane project. It generates code i.e boilerplate for modules and models. For the generation of api code is delegate to the solid cli in the api project.
2
-
3
- The modelMetadataService generateCode and moduleMetadataService generateCode are what are called eventually. These are called from both the refresh-model and refresh-module commands and the controllers for module-metadata and model-metadata.
4
-
5
- Change the code in schematic service to use the solidctl generate command instead of using the schematic command directly. This will ensure that the code generation is consistent and follows the same patterns as the rest of the project.
6
-