@yimingliao/cms 0.0.30 → 0.0.31

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.
@@ -829,4 +829,4 @@ declare class ServerError extends Error {
829
829
  static internalServerError(): ServerError;
830
830
  }
831
831
 
832
- export { ADMIN_ORDER_BY, ORDER_BY, POST_ORDER_BY, type RawCacheKey, ServerError, createAdminCommandRepository, createAdminQueryRepository, createAdminRefreshTokenCommandRepository, createAdminRefreshTokenQueryRepository, createArgon2Service, createAuthMiddleware, createAuthUseCases, createCache, createCacheResult, createCookieService, createCryptoService, createExecuteAction, createExecuteApi, createFileCommandRepository, createFileQueryRepository, createFileSchema, createFolderCommandRepository, createFolderQueryRepository, createIpRateLimiter, createJwtService, createMultiFileSchema, createPostCommandRepository, createPostQueryRepository, createSchemas, createSeoMetadataCommandRepository, createTocItemSchema, createVerifyAccessToken, createVerifyRefreshToken, createZod, normalizeCacheKey };
832
+ export { ADMIN_ORDER_BY, ORDER_BY, POST_ORDER_BY, type RawCacheKey, ServerError, createAdminCommandRepository, createAdminQueryRepository, createAdminRefreshTokenCommandRepository, createAdminRefreshTokenQueryRepository, createArgon2Service, createAuthMiddleware, createAuthUseCases, createCache, createCacheResult, createCookieService, createCryptoService, createExecuteAction, createExecuteApi, createExist, createFileCommandRepository, createFileQueryRepository, createFileSchema, createFolderCommandRepository, createFolderQueryRepository, createIpRateLimiter, createJwtService, createMultiFileSchema, createPostCommandRepository, createPostQueryRepository, createSchemas, createSeoMetadataCommandRepository, createTocItemSchema, createUnique, createVerifyAccessToken, createVerifyRefreshToken, createZod, normalizeCacheKey };
@@ -310,6 +310,65 @@ function createIpRateLimiter(cache, appName) {
310
310
  };
311
311
  }
312
312
 
313
+ // src/server/infrastructure/zod/rules/unique.ts
314
+ function createUnique(prisma) {
315
+ return async function unique(value, options) {
316
+ if (!value) return true;
317
+ let query = `
318
+ SELECT COUNT(*) AS count
319
+ FROM ${options.table}
320
+ WHERE ${options.column} = $1
321
+ `;
322
+ const params = [value];
323
+ const appendCondition = (op, sc) => {
324
+ const paramIndex = params.length + 1;
325
+ const cast = sc.cast ? `::"${sc.cast}"` : "";
326
+ query += ` AND ${sc.name} ${op} $${paramIndex}${cast}`;
327
+ params.push(sc.value);
328
+ };
329
+ if (options.scope) {
330
+ options.scope.forEach((sc) => appendCondition("=", sc));
331
+ }
332
+ if (options.excludeSelf) {
333
+ appendCondition("!=", options.excludeSelf);
334
+ }
335
+ try {
336
+ const result2 = await prisma.$queryRawUnsafe(
337
+ query,
338
+ ...params
339
+ );
340
+ return Number(result2[0]?.count || 0) === 0;
341
+ } catch (error) {
342
+ console.error("Unique check failed:", error);
343
+ return false;
344
+ }
345
+ };
346
+ }
347
+
348
+ // src/server/infrastructure/zod/rules/exist.ts
349
+ function createExist(prisma) {
350
+ return async function exist(value, options) {
351
+ if (!value) return false;
352
+ const column = options.column || "id";
353
+ const query = `
354
+ SELECT COUNT(*) AS count
355
+ FROM ${options.table}
356
+ WHERE ${column} = $1
357
+ `;
358
+ try {
359
+ const result2 = await prisma.$queryRawUnsafe(
360
+ query,
361
+ value
362
+ );
363
+ const count = Number(result2[0]?.count || 0);
364
+ return count > 0;
365
+ } catch (error) {
366
+ console.error("Exist check failed:", error);
367
+ return false;
368
+ }
369
+ };
370
+ }
371
+
313
372
  // src/server/infrastructure/zod/rules/bcp47.ts
314
373
  function bcp47(locale) {
315
374
  if (typeof locale !== "string") return false;
@@ -1985,4 +2044,4 @@ function createAuthUseCases({
1985
2044
  };
1986
2045
  }
1987
2046
 
1988
- export { ADMIN_ORDER_BY, ORDER_BY, POST_ORDER_BY, ServerError, createAdminCommandRepository, createAdminQueryRepository, createAdminRefreshTokenCommandRepository, createAdminRefreshTokenQueryRepository, createArgon2Service, createAuthMiddleware, createAuthUseCases, createCache, createCacheResult, createCookieService, createCryptoService, createExecuteAction, createExecuteApi, createFileCommandRepository, createFileQueryRepository, createFileSchema, createFolderCommandRepository, createFolderQueryRepository, createIpRateLimiter, createJwtService, createMultiFileSchema, createPostCommandRepository, createPostQueryRepository, createSchemas, createSeoMetadataCommandRepository, createTocItemSchema, createVerifyAccessToken, createVerifyRefreshToken, createZod, normalizeCacheKey };
2047
+ export { ADMIN_ORDER_BY, ORDER_BY, POST_ORDER_BY, ServerError, createAdminCommandRepository, createAdminQueryRepository, createAdminRefreshTokenCommandRepository, createAdminRefreshTokenQueryRepository, createArgon2Service, createAuthMiddleware, createAuthUseCases, createCache, createCacheResult, createCookieService, createCryptoService, createExecuteAction, createExecuteApi, createExist, createFileCommandRepository, createFileQueryRepository, createFileSchema, createFolderCommandRepository, createFolderQueryRepository, createIpRateLimiter, createJwtService, createMultiFileSchema, createPostCommandRepository, createPostQueryRepository, createSchemas, createSeoMetadataCommandRepository, createTocItemSchema, createUnique, createVerifyAccessToken, createVerifyRefreshToken, createZod, normalizeCacheKey };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@yimingliao/cms",
3
- "version": "0.0.30",
3
+ "version": "0.0.31",
4
4
  "author": "Yiming Liao",
5
5
  "license": "MIT",
6
6
  "type": "module",