@rpcbase/db 0.32.0 → 0.34.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.
@@ -1,33 +1,36 @@
1
- import { LoadModelCtx, loadModel, loadRbModel } from './loadModel';
1
+ import { LoadModelCtx, models } from './modelsApi';
2
2
  import { ModelModules } from './registerModels';
3
3
  import type * as frameworkSchemas from "./models";
4
4
  type ExtractModelNamesFromSchemas<TModules> = {
5
5
  [K in keyof TModules]-?: K extends `${infer Name}Schema` ? Name : never;
6
6
  }[keyof TModules] & string;
7
7
  type FrameworkModelName = ExtractModelNamesFromSchemas<typeof frameworkSchemas>;
8
- type WithoutRbPrefix<TName extends string> = TName extends `RB${string}` ? never : TName;
9
- type TenantInternalRbModelName = "RBUploadSession" | "RBUploadChunk" | "RBNotification" | "RBNotificationSettings";
10
- export type TenantModelName<TModules extends ModelModules> = WithoutRbPrefix<ExtractModelNamesFromSchemas<TModules>> | WithoutRbPrefix<FrameworkModelName> | TenantInternalRbModelName;
11
- export type RbModelName = ExtractModelNamesFromSchemas<typeof frameworkSchemas> extends infer Name ? Name extends string ? Name extends `RB${string}` ? Name extends "RBRtsChange" | "RBRtsCounter" | "RBUploadSession" | "RBUploadChunk" | "RBNotification" | "RBNotificationSettings" ? never : Name : never : never : never;
12
- type LoadedTenantModel = Awaited<ReturnType<typeof loadModel>>;
13
- type LoadedRbModel = Awaited<ReturnType<typeof loadRbModel>>;
14
- type ModelsGetFn<TModules extends ModelModules> = {
15
- (modelName: TenantModelName<TModules>, ctx: LoadModelCtx): ReturnType<typeof loadModel>;
16
- <const TNames extends readonly TenantModelName<TModules>[]>(modelNames: TNames, ctx: LoadModelCtx): Promise<{
8
+ type RpcbaseGlobalModelName = Extract<FrameworkModelName, "RBUser" | "RBTenant">;
9
+ export type TenantModelName<TTenantModules extends ModelModules> = ExtractModelNamesFromSchemas<TTenantModules>;
10
+ export type GlobalModelName<TGlobalModules extends ModelModules> = RpcbaseGlobalModelName | ExtractModelNamesFromSchemas<TGlobalModules>;
11
+ type LoadedTenantModel = Awaited<ReturnType<(typeof models)["get"]>>;
12
+ type LoadedGlobalModel = Awaited<ReturnType<(typeof models)["getGlobal"]>>;
13
+ type ModelsGetFn<TTenantModules extends ModelModules> = {
14
+ (modelName: TenantModelName<TTenantModules>, ctx: LoadModelCtx): ReturnType<(typeof models)["get"]>;
15
+ <const TNames extends readonly TenantModelName<TTenantModules>[]>(modelNames: TNames, ctx: LoadModelCtx): Promise<{
17
16
  [K in keyof TNames]: LoadedTenantModel;
18
17
  }>;
19
18
  };
20
- type ModelsGetRbFn = {
21
- (modelName: RbModelName, ctx: LoadModelCtx): ReturnType<typeof loadRbModel>;
22
- <const TNames extends readonly RbModelName[]>(modelNames: TNames, ctx: LoadModelCtx): Promise<{
23
- [K in keyof TNames]: LoadedRbModel;
19
+ type ModelsGetGlobalFn<TGlobalModules extends ModelModules> = {
20
+ (modelName: GlobalModelName<TGlobalModules>, ctx: LoadModelCtx): ReturnType<(typeof models)["getGlobal"]>;
21
+ <const TNames extends readonly GlobalModelName<TGlobalModules>[]>(modelNames: TNames, ctx: LoadModelCtx): Promise<{
22
+ [K in keyof TNames]: LoadedGlobalModel;
24
23
  }>;
25
24
  };
26
- export type ModelsClient<TModules extends ModelModules> = {
27
- register: (modules: TModules) => void;
28
- get: ModelsGetFn<TModules>;
29
- getRb: ModelsGetRbFn;
25
+ export type ModelsConfig<TTenantModules extends ModelModules, TGlobalModules extends ModelModules> = {
26
+ tenant: TTenantModules;
27
+ global?: TGlobalModules;
30
28
  };
31
- export declare const createModels: <TModules extends ModelModules>(modules: TModules) => ModelsClient<TModules>;
29
+ export type ModelsClient<TTenantModules extends ModelModules, TGlobalModules extends ModelModules> = {
30
+ register: (modules: ModelsConfig<TTenantModules, TGlobalModules>) => void;
31
+ get: ModelsGetFn<TTenantModules>;
32
+ getGlobal: ModelsGetGlobalFn<TGlobalModules>;
33
+ };
34
+ export declare const createModels: <TTenantModules extends ModelModules, TGlobalModules extends ModelModules = Record<string, never>>(modules: ModelsConfig<TTenantModules, TGlobalModules>) => ModelsClient<TTenantModules, TGlobalModules>;
32
35
  export {};
33
36
  //# sourceMappingURL=createModels.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"createModels.d.ts","sourceRoot":"","sources":["../src/createModels.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAC/C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAA;AACpD,OAAO,KAAK,KAAK,gBAAgB,MAAM,UAAU,CAAA;AACjD,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAIpD,KAAK,4BAA4B,CAAC,QAAQ,IAAI;KAC3C,CAAC,IAAI,MAAM,QAAQ,CAAC,CAAC,GAAG,CAAC,SAAS,GAAG,MAAM,IAAI,QAAQ,GAAG,IAAI,GAAG,KAAK;CACxE,CAAC,MAAM,QAAQ,CAAC,GAAG,MAAM,CAAA;AAE1B,KAAK,kBAAkB,GAAG,4BAA4B,CAAC,OAAO,gBAAgB,CAAC,CAAA;AAE/E,KAAK,eAAe,CAAC,KAAK,SAAS,MAAM,IAAI,KAAK,SAAS,KAAK,MAAM,EAAE,GAAG,KAAK,GAAG,KAAK,CAAA;AAExF,KAAK,yBAAyB,GAC1B,iBAAiB,GACjB,eAAe,GACf,gBAAgB,GAChB,wBAAwB,CAAA;AAE5B,MAAM,MAAM,eAAe,CAAC,QAAQ,SAAS,YAAY,IACrD,eAAe,CAAC,4BAA4B,CAAC,QAAQ,CAAC,CAAC,GACvD,eAAe,CAAC,kBAAkB,CAAC,GACnC,yBAAyB,CAAA;AAE7B,MAAM,MAAM,WAAW,GAAG,4BAA4B,CAAC,OAAO,gBAAgB,CAAC,SAAS,MAAM,IAAI,GAC9F,IAAI,SAAS,MAAM,GACjB,IAAI,SAAS,KAAK,MAAM,EAAE,GACxB,IAAI,SACF,aAAa,GACb,cAAc,GACd,iBAAiB,GACjB,eAAe,GACf,gBAAgB,GAChB,wBAAwB,GACxB,KAAK,GACL,IAAI,GACN,KAAK,GACP,KAAK,GACP,KAAK,CAAA;AAET,KAAK,iBAAiB,GAAG,OAAO,CAAC,UAAU,CAAC,OAAO,SAAS,CAAC,CAAC,CAAA;AAC9D,KAAK,aAAa,GAAG,OAAO,CAAC,UAAU,CAAC,OAAO,WAAW,CAAC,CAAC,CAAA;AAE5D,KAAK,WAAW,CAAC,QAAQ,SAAS,YAAY,IAAI;IAChD,CAAC,SAAS,EAAE,eAAe,CAAC,QAAQ,CAAC,EAAE,GAAG,EAAE,YAAY,GAAG,UAAU,CAAC,OAAO,SAAS,CAAC,CAAA;IACvF,CAAC,KAAK,CAAC,MAAM,SAAS,SAAS,eAAe,CAAC,QAAQ,CAAC,EAAE,EACxD,UAAU,EAAE,MAAM,EAClB,GAAG,EAAE,YAAY,GAChB,OAAO,CAAC;SAAG,CAAC,IAAI,MAAM,MAAM,GAAG,iBAAiB;KAAE,CAAC,CAAA;CACvD,CAAA;AAED,KAAK,aAAa,GAAG;IACnB,CAAC,SAAS,EAAE,WAAW,EAAE,GAAG,EAAE,YAAY,GAAG,UAAU,CAAC,OAAO,WAAW,CAAC,CAAA;IAC3E,CAAC,KAAK,CAAC,MAAM,SAAS,SAAS,WAAW,EAAE,EAC1C,UAAU,EAAE,MAAM,EAClB,GAAG,EAAE,YAAY,GAChB,OAAO,CAAC;SAAG,CAAC,IAAI,MAAM,MAAM,GAAG,aAAa;KAAE,CAAC,CAAA;CACnD,CAAA;AAED,MAAM,MAAM,YAAY,CAAC,QAAQ,SAAS,YAAY,IAAI;IACxD,QAAQ,EAAE,CAAC,OAAO,EAAE,QAAQ,KAAK,IAAI,CAAA;IACrC,GAAG,EAAE,WAAW,CAAC,QAAQ,CAAC,CAAA;IAC1B,KAAK,EAAE,aAAa,CAAA;CACrB,CAAA;AAED,eAAO,MAAM,YAAY,GAAI,QAAQ,SAAS,YAAY,EAAE,SAAS,QAAQ,KAAG,YAAY,CAAC,QAAQ,CAsBpG,CAAA"}
1
+ {"version":3,"file":"createModels.d.ts","sourceRoot":"","sources":["../src/createModels.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ export declare const GLOBAL_DB_SUFFIX = "-global-db";
2
+ export declare const getGlobalDbName: (env?: NodeJS.ProcessEnv) => string;
3
+ export declare const getTenantDbName: (tenantId: string, env?: NodeJS.ProcessEnv) => string;
4
+ //# sourceMappingURL=dbNames.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dbNames.d.ts","sourceRoot":"","sources":["../src/dbNames.ts"],"names":[],"mappings":"AAQA,eAAO,MAAM,gBAAgB,eAAe,CAAA;AAE5C,eAAO,MAAM,eAAe,GAAI,MAAK,MAAM,CAAC,UAAwB,KAAG,MAEtE,CAAA;AAED,eAAO,MAAM,eAAe,GAAI,UAAU,MAAM,EAAE,MAAK,MAAM,CAAC,UAAwB,KAAG,MAExF,CAAA"}
package/dist/index.d.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  export * from './models';
2
2
  export * from './schema';
3
3
  export * from './createModels';
4
- export * from './loadModel';
4
+ export * from './modelsApi';
5
5
  export * from './tenantFilesystemDb';
6
6
  export * from './acl';
7
7
  export * from './pagination';
package/dist/index.js CHANGED
@@ -225,6 +225,7 @@ const ZRBUploadSession = z.object({
225
225
  createdAt: z.date(),
226
226
  expiresAt: z.date(),
227
227
  fileId: z.string().optional(),
228
+ isPublic: z.boolean().optional(),
228
229
  error: z.string().optional()
229
230
  });
230
231
  const RBUploadSessionSchema = new Schema(
@@ -241,6 +242,7 @@ const RBUploadSessionSchema = new Schema(
241
242
  createdAt: { type: Date, required: true, default: Date.now },
242
243
  expiresAt: { type: Date, required: true },
243
244
  fileId: { type: String, required: false },
245
+ isPublic: { type: Boolean, required: false },
244
246
  error: { type: String, required: false }
245
247
  },
246
248
  {
@@ -643,7 +645,11 @@ function extendZod(z_0) {
643
645
  };
644
646
  for (const [key, value] of Object.entries(TypesMap)) {
645
647
  if (value?.prototype) {
646
- value.prototype.__zm_type = key;
648
+ Object.defineProperty(value.prototype, "__zm_type", {
649
+ value: key,
650
+ configurable: true,
651
+ writable: true
652
+ });
647
653
  }
648
654
  }
649
655
  }
@@ -1140,6 +1146,20 @@ function parseMixed(required = true, def) {
1140
1146
  required
1141
1147
  };
1142
1148
  }
1149
+ const getAppName$1 = (env = process.env) => {
1150
+ const appName = env.APP_NAME?.trim();
1151
+ if (!appName) {
1152
+ throw new Error("Missing APP_NAME");
1153
+ }
1154
+ return appName;
1155
+ };
1156
+ const GLOBAL_DB_SUFFIX = "-global-db";
1157
+ const getGlobalDbName = (env = process.env) => {
1158
+ return `${getAppName$1(env)}${GLOBAL_DB_SUFFIX}`;
1159
+ };
1160
+ const getTenantDbName = (tenantId, env = process.env) => {
1161
+ return `${getAppName$1(env)}-${tenantId.trim()}-db`;
1162
+ };
1143
1163
  const getMongoUrl = (env = process.env) => {
1144
1164
  const explicitUrl = env.MONGODB_URL ?? env.MONGO_URL ?? env.MONGODB_URI ?? env.DB_URL;
1145
1165
  if (explicitUrl && explicitUrl.trim()) {
@@ -1196,7 +1216,7 @@ const getDbName = (db) => {
1196
1216
  const raw = maybe.name ?? maybe.db?.databaseName;
1197
1217
  return typeof raw === "string" ? raw : "";
1198
1218
  };
1199
- const isUsersDb = (db) => getDbName(db).endsWith("-users-db");
1219
+ const isGlobalDb = (db) => getDbName(db).endsWith(GLOBAL_DB_SUFFIX);
1200
1220
  const getRtsModels = (db) => {
1201
1221
  const RtsCounter = db.models.RBRtsCounter ?? db.model("RBRtsCounter", RBRtsCounterSchema);
1202
1222
  const RtsChange = db.models.RBRtsChange ?? db.model("RBRtsChange", RBRtsChangeSchema);
@@ -1243,7 +1263,7 @@ const recordResetModel = async (db, modelName) => {
1243
1263
  const captureDeleteMeta = async (query, mode) => {
1244
1264
  const modelName = String(query?.model?.modelName ?? "");
1245
1265
  if (!modelName || modelName.startsWith("RB") || EXCLUDED_MODEL_NAMES.has(modelName)) return;
1246
- if (isUsersDb(query?.model?.db)) return;
1266
+ if (isGlobalDb(query?.model?.db)) return;
1247
1267
  const filter = typeof query.getFilter === "function" ? query.getFilter() : query.getQuery?.() ?? {};
1248
1268
  const findQuery = query.model.find(filter, { _id: 1 }).lean();
1249
1269
  if (mode === "one") {
@@ -1296,7 +1316,7 @@ const rtsChangeLogPlugin = (schema) => {
1296
1316
  if (!modelName || modelName.startsWith("RB") || EXCLUDED_MODEL_NAMES.has(modelName)) return;
1297
1317
  const db = this?.model?.db;
1298
1318
  if (!db) return;
1299
- if (isUsersDb(db)) return;
1319
+ if (isGlobalDb(db)) return;
1300
1320
  const docId = normalizeId(doc?._id);
1301
1321
  if (!docId) return;
1302
1322
  try {
@@ -1854,12 +1874,11 @@ const mongoPaginationPlugin = (schema, pluginOptions) => {
1854
1874
  return await paginateMongoQuery(this, spec, { cursor });
1855
1875
  };
1856
1876
  };
1857
- const rtsChangeLogApplied = /* @__PURE__ */ new WeakSet();
1858
- const accessibleRecordsApplied = /* @__PURE__ */ new WeakSet();
1859
- const aclPluginApplied = /* @__PURE__ */ new WeakSet();
1860
- const paginationPluginApplied = /* @__PURE__ */ new WeakSet();
1861
1877
  let cachedModels = null;
1862
- const isRtsChangelogExcludedModelName = (name) => name.startsWith("RB");
1878
+ const DEFAULT_GLOBAL_RB_MODEL_NAMES_SET = /* @__PURE__ */ new Set([
1879
+ "RBUser",
1880
+ "RBTenant"
1881
+ ]);
1863
1882
  const assertSchema = (exportName, value) => {
1864
1883
  if (value instanceof mongoose.Schema) return value;
1865
1884
  throw new Error(
@@ -1870,137 +1889,125 @@ const assertSchema = (exportName, value) => {
1870
1889
  ].join(" ")
1871
1890
  );
1872
1891
  };
1873
- const buildAppModels = (modules) => Object.entries(modules).filter(([key]) => key.endsWith("Schema")).map(([key, schemaValue]) => {
1892
+ const getFrameworkSchemaForModelName = (modelName) => {
1893
+ const exportName = `${modelName}Schema`;
1894
+ const value = frameworkSchemas[exportName];
1895
+ if (!(value instanceof mongoose.Schema)) return null;
1896
+ return value;
1897
+ };
1898
+ const applyTenantPlugins = (schema) => {
1899
+ schema.plugin(accessibleRecordsPlugin);
1900
+ schema.plugin(mongooseAclPlugin);
1901
+ schema.plugin(mongoPaginationPlugin);
1902
+ schema.plugin(rtsChangeLogPlugin);
1903
+ };
1904
+ const registerSchema = (target, other, modelName, schema, scope) => {
1905
+ if (target[modelName] || other[modelName]) {
1906
+ throw new Error(`Duplicate model name "${modelName}" across tenant/global scopes`);
1907
+ }
1908
+ target[modelName] = schema;
1909
+ };
1910
+ const buildSchemasFromModules = (modules) => Object.entries(modules).filter(([key]) => key.endsWith("Schema")).map(([key, schemaValue]) => {
1874
1911
  const schema = assertSchema(key, schemaValue);
1875
- const name = key.replace(/Schema$/, "");
1876
- if (!accessibleRecordsApplied.has(schema)) {
1877
- schema.plugin(accessibleRecordsPlugin);
1878
- accessibleRecordsApplied.add(schema);
1879
- }
1880
- if (!aclPluginApplied.has(schema)) {
1881
- schema.plugin(mongooseAclPlugin);
1882
- aclPluginApplied.add(schema);
1883
- }
1884
- if (!paginationPluginApplied.has(schema)) {
1885
- schema.plugin(mongoPaginationPlugin);
1886
- paginationPluginApplied.add(schema);
1887
- }
1888
- if (!isRtsChangelogExcludedModelName(name)) {
1889
- if (!rtsChangeLogApplied.has(schema)) {
1890
- schema.plugin(rtsChangeLogPlugin);
1891
- rtsChangeLogApplied.add(schema);
1912
+ const modelName = key.replace(/Schema$/, "");
1913
+ return { modelName, schema };
1914
+ });
1915
+ const registerModels = ({ tenant, global }) => {
1916
+ registerPoliciesFromModules(frameworkSchemas);
1917
+ registerPoliciesFromModules(tenant);
1918
+ const tenantSchemas = {};
1919
+ const globalSchemas = {};
1920
+ for (const { modelName, schema } of buildSchemasFromModules(frameworkSchemas)) {
1921
+ if (DEFAULT_GLOBAL_RB_MODEL_NAMES_SET.has(modelName)) {
1922
+ const cloned = schema.clone();
1923
+ registerSchema(globalSchemas, tenantSchemas, modelName, cloned);
1924
+ } else {
1925
+ const cloned = schema.clone();
1926
+ applyTenantPlugins(cloned);
1927
+ registerSchema(tenantSchemas, globalSchemas, modelName, cloned);
1892
1928
  }
1893
1929
  }
1894
- return {
1895
- name,
1896
- model: mongoose.models[name] ?? mongoose.model(name, schema)
1897
- };
1898
- });
1899
- const buildFrameworkModels = () => Object.entries(frameworkSchemas).filter(([key]) => key.endsWith("Schema")).map(([key, schemaValue]) => {
1900
- const schema = assertSchema(key, schemaValue);
1901
- const name = key.replace(/Schema$/, "");
1902
- if (!accessibleRecordsApplied.has(schema)) {
1903
- schema.plugin(accessibleRecordsPlugin);
1904
- accessibleRecordsApplied.add(schema);
1905
- }
1906
- if (!aclPluginApplied.has(schema)) {
1907
- schema.plugin(mongooseAclPlugin);
1908
- aclPluginApplied.add(schema);
1909
- }
1910
- if (!paginationPluginApplied.has(schema)) {
1911
- schema.plugin(mongoPaginationPlugin);
1912
- paginationPluginApplied.add(schema);
1913
- }
1914
- if (!isRtsChangelogExcludedModelName(name)) {
1915
- if (!rtsChangeLogApplied.has(schema)) {
1916
- schema.plugin(rtsChangeLogPlugin);
1917
- rtsChangeLogApplied.add(schema);
1930
+ for (const { modelName, schema } of buildSchemasFromModules(tenant)) {
1931
+ if (modelName === "RBUser" || modelName === "RBTenant") {
1932
+ throw new Error(`Invalid tenant model name "${modelName}". RBUser/RBTenant are global models.`);
1933
+ }
1934
+ if (modelName.startsWith("RB")) {
1935
+ const frameworkSchema = getFrameworkSchemaForModelName(modelName);
1936
+ if (frameworkSchema && schema === frameworkSchema) continue;
1937
+ throw new Error(`Invalid tenant model name "${modelName}". RB* models are reserved for rpcbase.`);
1918
1938
  }
1939
+ const cloned = schema.clone();
1940
+ applyTenantPlugins(cloned);
1941
+ registerSchema(tenantSchemas, globalSchemas, modelName, cloned);
1942
+ }
1943
+ for (const { modelName, schema } of buildSchemasFromModules(global ?? {})) {
1944
+ if (modelName.startsWith("RB")) {
1945
+ const frameworkSchema = getFrameworkSchemaForModelName(modelName);
1946
+ if (frameworkSchema && schema === frameworkSchema) continue;
1947
+ throw new Error(`Invalid global model name "${modelName}". RB* models are reserved for rpcbase.`);
1948
+ }
1949
+ const cloned = schema.clone();
1950
+ registerSchema(globalSchemas, tenantSchemas, modelName, cloned);
1919
1951
  }
1920
- return {
1921
- name,
1922
- model: mongoose.models[name] ?? mongoose.model(name, schema)
1923
- };
1924
- });
1925
- const buildModels = (modules) => {
1926
- const appModels = buildAppModels(modules);
1927
- const frameworkModels = buildFrameworkModels();
1928
- return [...frameworkModels, ...appModels].reduce((acc, { name, model }) => {
1929
- acc[name] = model;
1930
- return acc;
1931
- }, {});
1932
- };
1933
- const registerModels = (modules) => {
1934
- registerPoliciesFromModules(frameworkSchemas);
1935
- registerPoliciesFromModules(modules);
1936
- cachedModels = buildModels(modules);
1952
+ const allSchemas = { ...globalSchemas, ...tenantSchemas };
1953
+ for (const [modelName, schema] of Object.entries(allSchemas)) {
1954
+ if (!mongoose.models[modelName]) {
1955
+ mongoose.model(modelName, schema);
1956
+ }
1957
+ }
1958
+ cachedModels = { tenant: tenantSchemas, global: globalSchemas };
1937
1959
  };
1938
- const getRegisteredModels = () => {
1960
+ const getRegisteredModels = (scope) => {
1939
1961
  if (!cachedModels) {
1940
- throw new Error("Models not registered. Call createModels(...) once at startup (or import your models module) before using loadModel.");
1941
- }
1942
- return cachedModels;
1943
- };
1944
- const { APP_NAME } = process.env;
1945
- const TENANT_INTERNAL_MODEL_NAMES = /* @__PURE__ */ new Set([
1946
- "RBRtsChange",
1947
- "RBRtsCounter",
1948
- "RBUploadSession",
1949
- "RBUploadChunk",
1950
- "RBNotification",
1951
- "RBNotificationSettings"
1952
- ]);
1953
- const assertTenantModelName = (modelName) => {
1954
- if (TENANT_INTERNAL_MODEL_NAMES.has(modelName)) return;
1955
- assert(
1956
- !modelName.startsWith("RB"),
1957
- "Invalid tenant model name. RB* models are stored in the global users DB; use loadRbModel."
1958
- );
1959
- };
1960
- const assertRbModelName = (modelName) => {
1961
- assert(modelName.startsWith("RB"), "Invalid RB model name. Supported: RB*");
1962
- assert(!TENANT_INTERNAL_MODEL_NAMES.has(modelName), "Invalid RB model name. Use loadModel for tenant-scoped RB* models.");
1962
+ throw new Error("Models not registered. Call createModels(...) once at startup (or import your models module) before using models.get.");
1963
+ }
1964
+ return cachedModels[scope];
1963
1965
  };
1964
- const loadModelFromDb = async (modelName, dbName) => {
1965
- const models = getRegisteredModels();
1966
- const model = models[modelName];
1967
- assert(model, `Model ${modelName} not registered. Available models: ${Object.keys(models).join(", ")}`);
1966
+ const loadModelFromDb = async (modelName, dbName, scope) => {
1967
+ const schemas = getRegisteredModels(scope);
1968
+ const schema = schemas[modelName];
1969
+ assert(schema, `Model ${modelName} not registered. Available models: ${Object.keys(schemas).join(", ")}`);
1968
1970
  const modelConnection = await ensureMongooseConnection(dbName);
1969
1971
  if (!modelConnection.models[modelName]) {
1970
- modelConnection.model(modelName, model.schema);
1972
+ modelConnection.model(modelName, schema);
1971
1973
  }
1972
1974
  return modelConnection.models[modelName];
1973
1975
  };
1974
- const loadModel = async (modelName, ctx) => {
1975
- assertTenantModelName(modelName);
1976
+ const getTenantIdFromCtx = (ctx) => {
1976
1977
  const tenantId = ctx.req.session?.user?.currentTenantId;
1977
1978
  assert(typeof tenantId === "string" && tenantId.trim(), "Tenant ID is missing from session");
1978
- const dbName = `${APP_NAME}-${tenantId.trim()}-db`;
1979
- return loadModelFromDb(modelName, dbName);
1980
- };
1981
- const loadRbModel = async (modelName, _ctx) => {
1982
- assertRbModelName(modelName);
1983
- const dbName = `${APP_NAME}-users-db`;
1984
- return loadModelFromDb(modelName, dbName);
1979
+ return tenantId;
1980
+ };
1981
+ const models = {
1982
+ register: registerModels,
1983
+ get: async (modelName, ctx) => {
1984
+ const tenantId = getTenantIdFromCtx(ctx);
1985
+ const dbName = getTenantDbName(tenantId);
1986
+ return loadModelFromDb(modelName, dbName, "tenant");
1987
+ },
1988
+ getGlobal: async (modelName, ctx) => {
1989
+ const dbName = getGlobalDbName();
1990
+ return loadModelFromDb(modelName, dbName, "global");
1991
+ }
1985
1992
  };
1986
1993
  const createModels = (modules) => {
1987
1994
  registerModels(modules);
1988
1995
  const get = (async (modelNameOrNames, ctx) => {
1989
1996
  if (Array.isArray(modelNameOrNames)) {
1990
- return Promise.all(modelNameOrNames.map((modelName) => loadModel(modelName, ctx)));
1997
+ return Promise.all(modelNameOrNames.map((modelName) => models.get(modelName, ctx)));
1991
1998
  }
1992
- return loadModel(modelNameOrNames, ctx);
1999
+ return models.get(modelNameOrNames, ctx);
1993
2000
  });
1994
- const getRb = (async (modelNameOrNames, ctx) => {
2001
+ const getGlobal = (async (modelNameOrNames, ctx) => {
1995
2002
  if (Array.isArray(modelNameOrNames)) {
1996
- return Promise.all(modelNameOrNames.map((modelName) => loadRbModel(modelName)));
2003
+ return Promise.all(modelNameOrNames.map((modelName) => models.getGlobal(modelName, ctx)));
1997
2004
  }
1998
- return loadRbModel(modelNameOrNames);
2005
+ return models.getGlobal(modelNameOrNames, ctx);
1999
2006
  });
2000
2007
  return {
2001
2008
  register: registerModels,
2002
2009
  get,
2003
- getRb
2010
+ getGlobal
2004
2011
  };
2005
2012
  };
2006
2013
  const getAppName = () => {
@@ -2069,8 +2076,7 @@ export {
2069
2076
  getTenantFilesystemDbName,
2070
2077
  getTenantRolesFromSessionUser,
2071
2078
  isPaginationValidationError,
2072
- loadModel,
2073
- loadRbModel,
2079
+ models,
2074
2080
  mongoPaginationPlugin,
2075
2081
  registerPoliciesFromModules,
2076
2082
  registerPolicy,
@@ -25,6 +25,7 @@ export declare const ZRBUploadSession: z.ZodObject<{
25
25
  createdAt: z.ZodDate;
26
26
  expiresAt: z.ZodDate;
27
27
  fileId: z.ZodOptional<z.ZodString>;
28
+ isPublic: z.ZodOptional<z.ZodBoolean>;
28
29
  error: z.ZodOptional<z.ZodString>;
29
30
  }, z.core.$strip>;
30
31
  export type IRBUploadSession = z.infer<typeof ZRBUploadSession>;
@@ -1 +1 @@
1
- {"version":3,"file":"RBUploadSession.d.ts","sourceRoot":"","sources":["../../src/models/RBUploadSession.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAA;AACjC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAA;AAGvC,eAAO,MAAM,sBAAsB;;;;;EAAuD,CAAA;AAE1F,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;iBAc3B,CAAA;AAEF,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAA;AAE/D,eAAO,MAAM,qBAAqB,EAAE,MAoBnC,CAAA;AAID,eAAO,MAAM,qBAAqB,EAAE,SAkBnC,CAAA"}
1
+ {"version":3,"file":"RBUploadSession.d.ts","sourceRoot":"","sources":["../../src/models/RBUploadSession.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAA;AACjC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAA;AAGvC,eAAO,MAAM,sBAAsB;;;;;EAAuD,CAAA;AAE1F,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;iBAe3B,CAAA;AAEF,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAA;AAE/D,eAAO,MAAM,qBAAqB,EAAE,MAqBnC,CAAA;AAID,eAAO,MAAM,qBAAqB,EAAE,SAkBnC,CAAA"}
@@ -0,0 +1,19 @@
1
+ import { default as mongoose } from '../../vite/node_modules/mongoose';
2
+ export type LoadModelCtx = {
3
+ req: {
4
+ session?: {
5
+ user?: {
6
+ currentTenantId?: string;
7
+ };
8
+ } | null;
9
+ };
10
+ };
11
+ export declare const models: {
12
+ readonly register: ({ tenant, global }: {
13
+ tenant: import('./registerModels').ModelModules;
14
+ global?: import('./registerModels').ModelModules;
15
+ }) => void;
16
+ readonly get: (modelName: string, ctx: LoadModelCtx) => Promise<mongoose.Model<any, {}, {}, {}, any, any, any>>;
17
+ readonly getGlobal: (modelName: string, ctx: LoadModelCtx) => Promise<mongoose.Model<any, {}, {}, {}, any, any, any>>;
18
+ };
19
+ //# sourceMappingURL=modelsApi.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"modelsApi.d.ts","sourceRoot":"","sources":["../src/modelsApi.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,QAAQ,MAAM,UAAU,CAAA;AAOpC,MAAM,MAAM,YAAY,GAAG;IACzB,GAAG,EAAE;QACH,OAAO,CAAC,EAAE;YACR,IAAI,CAAC,EAAE;gBACL,eAAe,CAAC,EAAE,MAAM,CAAC;aAC1B,CAAA;SACF,GAAG,IAAI,CAAC;KACV,CAAC;CACH,CAAC;AA0BF,eAAO,MAAM,MAAM;;;cAcq1B,CAAC;;8BAXh1B,MAAM,OAAO,YAAY;oCAMnB,MAAM,OAAO,YAAY;CAI9C,CAAA"}
@@ -1,6 +1,11 @@
1
1
  import { default as mongoose } from '../../vite/node_modules/mongoose';
2
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, any>>;
5
- export type { ModelModules };
3
+ type ModelsScope = "tenant" | "global";
4
+ type RegisteredSchemas = Record<string, mongoose.Schema>;
5
+ export declare const registerModels: ({ tenant, global }: {
6
+ tenant: ModelModules;
7
+ global?: ModelModules;
8
+ }) => void;
9
+ export declare const getRegisteredModels: (scope: ModelsScope) => RegisteredSchemas;
10
+ export type { ModelModules, ModelsScope };
6
11
  //# sourceMappingURL=registerModels.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"registerModels.d.ts","sourceRoot":"","sources":["../src/registerModels.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,UAAU,CAAA;AAiB/B,KAAK,YAAY,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;AAwF3C,eAAO,MAAM,cAAc,GAAI,SAAS,YAAY,SAInD,CAAA;AAED,eAAO,MAAM,mBAAmB,sEAK/B,CAAA;AAED,YAAY,EAAE,YAAY,EAAE,CAAA"}
1
+ {"version":3,"file":"registerModels.d.ts","sourceRoot":"","sources":["../src/registerModels.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,UAAU,CAAA;AAU/B,KAAK,YAAY,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;AAC3C,KAAK,WAAW,GAAG,QAAQ,GAAG,QAAQ,CAAA;AAEtC,KAAK,iBAAiB,GAAG,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAA;AA8DxD,eAAO,MAAM,cAAc,GAAI,oBAAoB;IAAE,MAAM,EAAE,YAAY,CAAC;IAAC,MAAM,CAAC,EAAE,YAAY,CAAA;CAAE,SAmDjG,CAAA;AAED,eAAO,MAAM,mBAAmB,GAAI,OAAO,WAAW,sBAKrD,CAAA;AAED,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"rtsChangeLogPlugin.d.ts","sourceRoot":"","sources":["../src/rtsChangeLogPlugin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,QAAQ,MAAM,UAAU,CAAA;AAkKpC,eAAO,MAAM,kBAAkB,GAAI,QAAQ,QAAQ,CAAC,MAAM,KAAG,IAkC5D,CAAA"}
1
+ {"version":3,"file":"rtsChangeLogPlugin.d.ts","sourceRoot":"","sources":["../src/rtsChangeLogPlugin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,QAAQ,MAAM,UAAU,CAAA;AAmKpC,eAAO,MAAM,kBAAkB,GAAI,QAAQ,QAAQ,CAAC,MAAM,KAAG,IAkC5D,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"extension.d.ts","sourceRoot":"","sources":["../../src/schema/extension.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"extension.d.ts","sourceRoot":"","sources":["../../src/schema/extension.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { default as mongoose } from '../../vite/node_modules/mongoose';
2
- import { LoadModelCtx } from './loadModel';
2
+ import { LoadModelCtx } from './modelsApi';
3
3
  export declare const getTenantFilesystemDbName: (tenantId: string) => string;
4
4
  export declare const getTenantFilesystemDb: (tenantId: string) => Promise<mongoose.Connection>;
5
5
  export declare const getTenantFilesystemDbFromCtx: (ctx: LoadModelCtx) => Promise<mongoose.Connection>;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rpcbase/db",
3
- "version": "0.32.0",
3
+ "version": "0.34.0",
4
4
  "type": "module",
5
5
  "files": [
6
6
  "dist"
@@ -1,14 +0,0 @@
1
- import { default as mongoose } from '../../vite/node_modules/mongoose';
2
- type LoadModelCtx = {
3
- req: {
4
- session?: {
5
- user?: {
6
- currentTenantId?: string;
7
- };
8
- } | null;
9
- };
10
- };
11
- export declare const loadModel: (modelName: string, ctx: LoadModelCtx) => Promise<mongoose.Model<any, {}, {}, {}, any, any, any>>;
12
- export declare const loadRbModel: (modelName: string, _ctx: LoadModelCtx) => Promise<mongoose.Model<any, {}, {}, {}, any, any, any>>;
13
- export type { LoadModelCtx };
14
- //# sourceMappingURL=loadModel.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"loadModel.d.ts","sourceRoot":"","sources":["../src/loadModel.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,QAAQ,MAAM,UAAU,CAAA;AAMpC,KAAK,YAAY,GAAG;IAClB,GAAG,EAAE;QACH,OAAO,CAAC,EAAE;YACR,IAAI,CAAC,EAAE;gBACL,eAAe,CAAC,EAAE,MAAM,CAAC;aAC1B,CAAA;SACF,GAAG,IAAI,CAAC;KACV,CAAC;CACH,CAAC;AAyCF,eAAO,MAAM,SAAS,GAAU,WAAW,MAAM,EAAE,KAAK,YAAY,4DAOnE,CAAA;AAED,eAAO,MAAM,WAAW,GAAU,WAAW,MAAM,EAAE,MAAM,YAAY,4DAItE,CAAA;AAED,YAAY,EAAE,YAAY,EAAE,CAAA"}