@rpcbase/db 0.6.0 → 0.8.0

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.d.ts CHANGED
@@ -1,4 +1,5 @@
1
1
  export * from './models';
2
2
  export * from './schema';
3
3
  export * from './loadModel';
4
+ export * from './registerModels';
4
5
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAA;AACxB,cAAc,UAAU,CAAA;AACxB,cAAc,aAAa,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAA;AACxB,cAAc,UAAU,CAAA;AACxB,cAAc,aAAa,CAAA;AAC3B,cAAc,kBAAkB,CAAA"}
package/dist/index.js CHANGED
@@ -21,11 +21,6 @@ const UserSchema = new Schema({
21
21
  email_verification_code: { type: String, required: false },
22
22
  email_verification_expires_at: { type: Date, required: false }
23
23
  });
24
- const __vite_glob_0_1 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
25
- __proto__: null,
26
- UserSchema,
27
- ZUser
28
- }, Symbol.toStringTag, { value: "Module" }));
29
24
  const ZTenant = z.object({
30
25
  tenant_id: z.string(),
31
26
  parent_tenant_id: z.string().optional(),
@@ -36,11 +31,6 @@ const TenantSchema = new Schema({
36
31
  parent_tenant_id: { type: String },
37
32
  name: { type: String }
38
33
  });
39
- const __vite_glob_0_0 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
40
- __proto__: null,
41
- TenantSchema,
42
- ZTenant
43
- }, Symbol.toStringTag, { value: "Module" }));
44
34
  const frameworkSchemas = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
45
35
  __proto__: null,
46
36
  TenantSchema,
@@ -653,38 +643,42 @@ function parseMixed(required = true, def) {
653
643
  required
654
644
  };
655
645
  }
656
- const { APP_NAME, DB_PORT } = process.env;
657
- const connections = {};
658
646
  let cachedModels = null;
659
- const buildModels = () => {
660
- const externalModelModules = globalThis.__rb_model_modules;
661
- const modelModules = externalModelModules ?? /* @__PURE__ */ Object.assign({ "/src/models/Tenant.ts": __vite_glob_0_0, "/src/models/User.ts": __vite_glob_0_1, "/src/models/index.ts": frameworkSchemas });
662
- const appModels = Object.entries(modelModules).flatMap(([key, exports$1]) => {
663
- const modelName = key.split("/").pop()?.replace(/\.(t|j)sx?$/, "");
664
- assert(modelName, "Model name not found");
665
- const schemaEntry = Object.entries(exports$1).find(([key2]) => key2 === `${modelName}Schema`);
666
- if (!schemaEntry) return [];
667
- const schema = schemaEntry[1];
668
- if (!(schema instanceof mongoose.Schema)) return [];
669
- return [{
670
- name: modelName,
671
- model: mongoose.models[modelName] ?? mongoose.model(modelName, schema)
672
- }];
673
- });
674
- const frameworkModels = Object.entries(frameworkSchemas).filter(([_, schema]) => schema instanceof mongoose.Schema).map(([key, schema]) => {
675
- const name = key.replace(/Schema$/, "");
676
- return {
677
- name,
678
- model: mongoose.models[name] ?? mongoose.model(name, schema)
679
- };
680
- });
647
+ const buildAppModels = (modules) => Object.entries(modules).filter(([key, schema]) => key.endsWith("Schema") && schema instanceof mongoose.Schema).map(([key, schema]) => {
648
+ const name = key.replace(/Schema$/, "");
649
+ return {
650
+ name,
651
+ model: mongoose.models[name] ?? mongoose.model(name, schema)
652
+ };
653
+ });
654
+ const buildFrameworkModels = () => Object.entries(frameworkSchemas).filter(([_, schema]) => schema instanceof mongoose.Schema).map(([key, schema]) => {
655
+ const name = key.replace(/Schema$/, "");
656
+ return {
657
+ name,
658
+ model: mongoose.models[name] ?? mongoose.model(name, schema)
659
+ };
660
+ });
661
+ const buildModels = (modules) => {
662
+ const appModels = buildAppModels(modules);
663
+ const frameworkModels = buildFrameworkModels();
681
664
  return [...frameworkModels, ...appModels].reduce((acc, { name, model }) => {
682
665
  acc[name] = model;
683
666
  return acc;
684
667
  }, {});
685
668
  };
669
+ const registerModels = (modules) => {
670
+ cachedModels = buildModels(modules);
671
+ };
672
+ const getRegisteredModels = () => {
673
+ if (!cachedModels) {
674
+ throw new Error("Models not registered. Call registerModels before using loadModel.");
675
+ }
676
+ return cachedModels;
677
+ };
678
+ const { APP_NAME, DB_PORT } = process.env;
679
+ const connections = {};
686
680
  const loadModel = async (modelName, ctx) => {
687
- const models = cachedModels ?? (cachedModels = buildModels());
681
+ const models = getRegisteredModels();
688
682
  const tenantId = ctx.req.session?.user?.current_tenant_id || "00000000";
689
683
  assert(tenantId, "Tenant ID is missing from session");
690
684
  const dbName = ["User", "Tenant"].includes(modelName) ? `${APP_NAME}-users-db` : `${APP_NAME}-${tenantId}-db`;
@@ -721,7 +715,9 @@ export {
721
715
  ZTenant,
722
716
  ZUser,
723
717
  extendZod,
718
+ getRegisteredModels,
724
719
  loadModel,
720
+ registerModels,
725
721
  z2 as z,
726
722
  zId,
727
723
  zUUID,
@@ -1 +1 @@
1
- {"version":3,"file":"loadModel.d.ts","sourceRoot":"","sources":["../src/loadModel.ts"],"names":[],"mappings":"AAEA,OAAO,QAAQ,MAAM,UAAU,CAAA;AAK/B,KAAK,YAAY,GAAG;IAClB,GAAG,EAAE;QACH,OAAO,CAAC,EAAE;YACR,IAAI,CAAC,EAAE;gBACL,iBAAiB,CAAC,EAAE,MAAM,CAAC;aAC5B,CAAA;SACF,GAAG,IAAI,CAAC;KACV,CAAC;CACH,CAAC;AA+CF,eAAO,MAAM,SAAS,GAAU,WAAW,MAAM,EAAE,KAAK,YAAY,uDA2CnE,CAAA;AAED,YAAY,EAAE,YAAY,EAAE,CAAA"}
1
+ {"version":3,"file":"loadModel.d.ts","sourceRoot":"","sources":["../src/loadModel.ts"],"names":[],"mappings":"AAEA,OAAO,QAAQ,MAAM,UAAU,CAAA;AAK/B,KAAK,YAAY,GAAG;IAClB,GAAG,EAAE;QACH,OAAO,CAAC,EAAE;YACR,IAAI,CAAC,EAAE;gBACL,iBAAiB,CAAC,EAAE,MAAM,CAAC;aAC5B,CAAA;SACF,GAAG,IAAI,CAAC;KACV,CAAC;CACH,CAAC;AAKF,eAAO,MAAM,SAAS,GAAU,WAAW,MAAM,EAAE,KAAK,YAAY,uDA0CnE,CAAA;AAED,YAAY,EAAE,YAAY,EAAE,CAAA"}
@@ -0,0 +1,6 @@
1
+ import { default as mongoose } from '../../vite/node_modules/mongoose';
2
+ type ModelModules = Record<string, unknown>;
3
+ export declare const registerModels: (modules: ModelModules) => void;
4
+ export declare const getRegisteredModels: () => Record<string, mongoose.Model<any, {}, {}, {}, any, any>>;
5
+ export type { ModelModules };
6
+ //# sourceMappingURL=registerModels.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registerModels.d.ts","sourceRoot":"","sources":["../src/registerModels.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,UAAU,CAAA;AAK/B,KAAK,YAAY,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;AAoC3C,eAAO,MAAM,cAAc,GAAI,SAAS,YAAY,SAEnD,CAAA;AAED,eAAO,MAAM,mBAAmB,iEAK/B,CAAA;AAED,YAAY,EAAE,YAAY,EAAE,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rpcbase/db",
3
- "version": "0.6.0",
3
+ "version": "0.8.0",
4
4
  "type": "module",
5
5
  "files": [
6
6
  "dist"
@@ -28,7 +28,7 @@
28
28
  ]
29
29
  },
30
30
  "build-watch": {
31
- "command": "../../node_modules/.bin/vite build --watch'",
31
+ "command": "../../node_modules/.bin/vite build --watch",
32
32
  "service": true
33
33
  },
34
34
  "release": {
@@ -50,7 +50,7 @@
50
50
  }
51
51
  },
52
52
  "peerDependencies": {
53
- "mongoose": "^8",
53
+ "mongoose": "^8 || ^9",
54
54
  "zod": "^4"
55
55
  },
56
56
  "devDependencies": {