@reitwagen/data-layer 0.0.9 → 0.0.10

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.
@@ -0,0 +1,9 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __export = (target, all) => {
3
+ for (var name in all)
4
+ __defProp(target, name, { get: all[name], enumerable: true });
5
+ };
6
+
7
+ export { __export };
8
+ //# sourceMappingURL=chunk-PZ5AY32C.js.map
9
+ //# sourceMappingURL=chunk-PZ5AY32C.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"chunk-PZ5AY32C.js"}
package/dist/client.js CHANGED
@@ -1,3 +1,4 @@
1
- export { PrismaClient, client_default as default, prisma } from './chunk-NM4RWUTY.js';
1
+ export { prismaNamespace_exports as Prisma, PrismaClient, client_default as default, prisma } from './chunk-HQ4GX3B5.js';
2
+ import './chunk-PZ5AY32C.js';
2
3
  //# sourceMappingURL=client.js.map
3
4
  //# sourceMappingURL=client.js.map
@@ -1,4 +1,5 @@
1
- import { prisma } from '../chunk-NM4RWUTY.js';
1
+ import { prisma } from '../chunk-HQ4GX3B5.js';
2
+ import '../chunk-PZ5AY32C.js';
2
3
 
3
4
  // src/helpers/index.ts
4
5
  async function getImagesById(entityName, field, entityId) {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/helpers/index.ts"],"names":[],"mappings":"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","file":"index.js","sourcesContent":["import { prisma } from '../client.js';\n\n/**\n * Strapi 파일 시스템에서 단일 엔티티의 이미지를 조회합니다.\n * @param entityName - 엔티티 이름 (예: 'product', 'supply-product')\n * @param field - 필드 이름 (예: 'thumbnail', 'images')\n * @param entityId - 엔티티 ID\n * @returns 해당 엔티티의 파일 정보 배열\n */\nexport async function getImagesById(entityName: string, field: string, entityId: number) {\n const result = await prisma.filesRelatedMorphs.findMany({\n where: {\n relatedType: `api::${entityName}.${entityName}`,\n field: field,\n relatedId: entityId\n },\n include: {\n files: true\n },\n orderBy: {\n order: 'asc'\n }\n });\n\n return result.map((el: typeof result[0]) => ({\n relatedType: el.relatedType,\n fieldName: el.field,\n url: el.files?.url,\n relatedId: el.relatedId,\n formats: el.files?.formats,\n fileId: el.fileId\n }));\n}\n\n/**\n * Strapi 파일 시스템에서 여러 엔티티의 대표 이미지를 조회합니다.\n * 각 엔티티당 하나의 이미지만 반환합니다 (DISTINCT ON 동작).\n * @param entityName - 엔티티 이름\n * @param field - 필드 이름\n * @param entityIds - 엔티티 ID 배열\n * @returns 각 엔티티의 대표 파일 정보 배열\n */\nexport async function getImagesByIds(\n entityName: string,\n field: string,\n entityIds: number[]\n) {\n if (entityIds.length === 0) {\n return [];\n }\n\n // Prisma에서 DISTINCT ON을 지원하지 않으므로 raw query 사용\n const result = await prisma.$queryRaw<\n Array<{\n id: number;\n name: string | null;\n alternative_text: string | null;\n caption: string | null;\n width: number | null;\n height: number | null;\n formats: unknown;\n hash: string | null;\n ext: string | null;\n mime: string | null;\n size: number | null;\n url: string | null;\n preview_url: string | null;\n provider: string | null;\n provider_metadata: unknown;\n created_at: Date | null;\n updated_at: Date | null;\n folder_path: string | null;\n related_type: string | null;\n field_name: string | null;\n related_id: number | null;\n file_id: number | null;\n }>\n >`\n SELECT DISTINCT ON (frm.related_id)\n f.id,\n f.name,\n f.alternative_text,\n f.caption,\n f.width,\n f.height,\n f.formats,\n f.hash,\n f.ext,\n f.mime,\n f.size,\n f.url,\n f.preview_url,\n f.provider,\n f.provider_metadata,\n f.created_at,\n f.updated_at,\n f.folder_path,\n frm.related_type,\n frm.field AS field_name,\n frm.related_id,\n frm.file_id\n FROM files_related_morphs frm\n LEFT JOIN files f ON frm.file_id = f.id\n WHERE frm.related_type = ${'api::' + entityName + '.' + entityName}\n AND frm.field = ${field}\n AND frm.related_id = ANY(${entityIds})\n ORDER BY frm.related_id ASC, frm.order ASC\n LIMIT ${entityIds.length}\n `;\n\n return result.map((el) => ({\n id: el.id,\n name: el.name,\n alternativeText: el.alternative_text,\n caption: el.caption,\n width: el.width,\n height: el.height,\n formats: el.formats,\n hash: el.hash,\n ext: el.ext,\n mime: el.mime,\n size: el.size ? Number(el.size) : null,\n url: el.url,\n previewUrl: el.preview_url,\n provider: el.provider,\n providerMetadata: el.provider_metadata,\n createdAt: el.created_at,\n updatedAt: el.updated_at,\n folderPath: el.folder_path,\n relatedType: el.related_type,\n fieldName: el.field_name,\n relatedId: el.related_id,\n fileId: el.file_id\n }));\n}\n\n/**\n * Strapi 파일 시스템에서 여러 엔티티의 모든 이미지를 조회합니다.\n * 각 엔티티의 모든 이미지를 반환합니다.\n * @param entityName - 엔티티 이름\n * @param field - 필드 이름\n * @param entityIds - 엔티티 ID 배열\n * @returns 모든 파일 정보 배열\n */\nexport async function getManyImagesByIds(\n entityName: string,\n field: string,\n entityIds: number[]\n) {\n if (entityIds.length === 0) {\n return [];\n }\n\n const result = await prisma.filesRelatedMorphs.findMany({\n where: {\n relatedType: `api::${entityName}.${entityName}`,\n field: field,\n relatedId: {\n in: entityIds\n }\n },\n include: {\n files: true\n },\n orderBy: {\n order: 'asc'\n }\n });\n\n return result.map((el: typeof result[0]) => ({\n relatedType: el.relatedType,\n fieldName: el.field,\n url: el.files?.url,\n ext: el.files?.ext,\n relatedId: el.relatedId,\n formats: el.files?.formats,\n fileId: el.fileId,\n fileName: el.files?.name\n }));\n}\n\n/**\n * 상품 정보를 조회합니다 (채팅에서 사용)\n * @param productId - 상품 ID\n * @returns 상품 정보\n */\nexport async function getProduct(productId: number) {\n const product = await prisma.products.findUnique({\n where: { id: productId },\n select: {\n id: true,\n title: true,\n originalPrice: true,\n salePrice: true,\n mileage: true,\n year: true,\n modelName: true,\n region: true,\n productCode: true,\n publishedAt: true\n }\n });\n\n if (!product) return null;\n\n const images = await getImagesById('product', 'images', productId);\n\n return {\n products: {\n id: product.id,\n title: product.title,\n originalPrice: product.originalPrice,\n salePrice: product.salePrice,\n mileage: product.mileage,\n year: product.year,\n modelName: product.modelName,\n region: product.region,\n productCode: product.productCode,\n publishedAt: product.publishedAt\n },\n images\n };\n}\n"]}
1
+ {"version":3,"sources":["../../src/helpers/index.ts"],"names":[],"mappings":"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","file":"index.js","sourcesContent":["import { prisma } from '../client.js';\n\n/**\n * Strapi 파일 시스템에서 단일 엔티티의 이미지를 조회합니다.\n * @param entityName - 엔티티 이름 (예: 'product', 'supply-product')\n * @param field - 필드 이름 (예: 'thumbnail', 'images')\n * @param entityId - 엔티티 ID\n * @returns 해당 엔티티의 파일 정보 배열\n */\nexport async function getImagesById(entityName: string, field: string, entityId: number) {\n const result = await prisma.filesRelatedMorphs.findMany({\n where: {\n relatedType: `api::${entityName}.${entityName}`,\n field: field,\n relatedId: entityId\n },\n include: {\n files: true\n },\n orderBy: {\n order: 'asc'\n }\n });\n\n return result.map((el: typeof result[0]) => ({\n relatedType: el.relatedType,\n fieldName: el.field,\n url: el.files?.url,\n relatedId: el.relatedId,\n formats: el.files?.formats,\n fileId: el.fileId\n }));\n}\n\n/**\n * Strapi 파일 시스템에서 여러 엔티티의 대표 이미지를 조회합니다.\n * 각 엔티티당 하나의 이미지만 반환합니다 (DISTINCT ON 동작).\n * @param entityName - 엔티티 이름\n * @param field - 필드 이름\n * @param entityIds - 엔티티 ID 배열\n * @returns 각 엔티티의 대표 파일 정보 배열\n */\nexport async function getImagesByIds(\n entityName: string,\n field: string,\n entityIds: number[]\n) {\n if (entityIds.length === 0) {\n return [];\n }\n\n // Prisma에서 DISTINCT ON을 지원하지 않으므로 raw query 사용\n const result = await prisma.$queryRaw<\n Array<{\n id: number;\n name: string | null;\n alternative_text: string | null;\n caption: string | null;\n width: number | null;\n height: number | null;\n formats: unknown;\n hash: string | null;\n ext: string | null;\n mime: string | null;\n size: number | null;\n url: string | null;\n preview_url: string | null;\n provider: string | null;\n provider_metadata: unknown;\n created_at: Date | null;\n updated_at: Date | null;\n folder_path: string | null;\n related_type: string | null;\n field_name: string | null;\n related_id: number | null;\n file_id: number | null;\n }>\n >`\n SELECT DISTINCT ON (frm.related_id)\n f.id,\n f.name,\n f.alternative_text,\n f.caption,\n f.width,\n f.height,\n f.formats,\n f.hash,\n f.ext,\n f.mime,\n f.size,\n f.url,\n f.preview_url,\n f.provider,\n f.provider_metadata,\n f.created_at,\n f.updated_at,\n f.folder_path,\n frm.related_type,\n frm.field AS field_name,\n frm.related_id,\n frm.file_id\n FROM files_related_morphs frm\n LEFT JOIN files f ON frm.file_id = f.id\n WHERE frm.related_type = ${'api::' + entityName + '.' + entityName}\n AND frm.field = ${field}\n AND frm.related_id = ANY(${entityIds})\n ORDER BY frm.related_id ASC, frm.order ASC\n LIMIT ${entityIds.length}\n `;\n\n return result.map((el) => ({\n id: el.id,\n name: el.name,\n alternativeText: el.alternative_text,\n caption: el.caption,\n width: el.width,\n height: el.height,\n formats: el.formats,\n hash: el.hash,\n ext: el.ext,\n mime: el.mime,\n size: el.size ? Number(el.size) : null,\n url: el.url,\n previewUrl: el.preview_url,\n provider: el.provider,\n providerMetadata: el.provider_metadata,\n createdAt: el.created_at,\n updatedAt: el.updated_at,\n folderPath: el.folder_path,\n relatedType: el.related_type,\n fieldName: el.field_name,\n relatedId: el.related_id,\n fileId: el.file_id\n }));\n}\n\n/**\n * Strapi 파일 시스템에서 여러 엔티티의 모든 이미지를 조회합니다.\n * 각 엔티티의 모든 이미지를 반환합니다.\n * @param entityName - 엔티티 이름\n * @param field - 필드 이름\n * @param entityIds - 엔티티 ID 배열\n * @returns 모든 파일 정보 배열\n */\nexport async function getManyImagesByIds(\n entityName: string,\n field: string,\n entityIds: number[]\n) {\n if (entityIds.length === 0) {\n return [];\n }\n\n const result = await prisma.filesRelatedMorphs.findMany({\n where: {\n relatedType: `api::${entityName}.${entityName}`,\n field: field,\n relatedId: {\n in: entityIds\n }\n },\n include: {\n files: true\n },\n orderBy: {\n order: 'asc'\n }\n });\n\n return result.map((el: typeof result[0]) => ({\n relatedType: el.relatedType,\n fieldName: el.field,\n url: el.files?.url,\n ext: el.files?.ext,\n relatedId: el.relatedId,\n formats: el.files?.formats,\n fileId: el.fileId,\n fileName: el.files?.name\n }));\n}\n\n/**\n * 상품 정보를 조회합니다 (채팅에서 사용)\n * @param productId - 상품 ID\n * @returns 상품 정보\n */\nexport async function getProduct(productId: number) {\n const product = await prisma.products.findUnique({\n where: { id: productId },\n select: {\n id: true,\n title: true,\n originalPrice: true,\n salePrice: true,\n mileage: true,\n year: true,\n modelName: true,\n region: true,\n productCode: true,\n publishedAt: true\n }\n });\n\n if (!product) return null;\n\n const images = await getImagesById('product', 'images', productId);\n\n return {\n products: {\n id: product.id,\n title: product.title,\n originalPrice: product.originalPrice,\n salePrice: product.salePrice,\n mileage: product.mileage,\n year: product.year,\n modelName: product.modelName,\n region: product.region,\n productCode: product.productCode,\n publishedAt: product.publishedAt\n },\n images\n };\n}\n"]}
package/dist/index.js CHANGED
@@ -1,4 +1,5 @@
1
1
  export { createHandlerRegistry, isDeleteEvent, isInsertEvent, isUpdateEvent, paymentHandlers, processEvent, registerHandler, subscriptionHandlers } from './chunk-4OINT53S.js';
2
- export { PrismaClient, prisma } from './chunk-NM4RWUTY.js';
2
+ export { PrismaClient, prisma } from './chunk-HQ4GX3B5.js';
3
+ import './chunk-PZ5AY32C.js';
3
4
  //# sourceMappingURL=index.js.map
4
5
  //# sourceMappingURL=index.js.map
@@ -1,27 +1,27 @@
1
- import { PrismaClient } from "../prisma/generated/client.js";
2
- declare function createPrismaClient(): import("@prisma/client/runtime/client").DynamicClientExtensionThis<import("../prisma/generated/internal/prismaNamespace.js").TypeMap<import("@prisma/client/runtime/client").InternalArgs & {
1
+ import { Prisma, PrismaClient } from "../prisma/generated/client.js";
2
+ declare function createPrismaClient(): import("@prisma/client/runtime/client").DynamicClientExtensionThis<Prisma.TypeMap<import("@prisma/client/runtime/client").InternalArgs & {
3
3
  result: {};
4
4
  model: {};
5
5
  query: {};
6
6
  client: {};
7
- }, import("../prisma/generated/internal/prismaNamespace.js").GlobalOmitConfig | undefined>, import("../prisma/generated/internal/prismaNamespace.js").TypeMapCb<import("../prisma/generated/internal/prismaNamespace.js").GlobalOmitConfig | undefined>, {
7
+ }, Prisma.GlobalOmitConfig | undefined>, Prisma.TypeMapCb<Prisma.GlobalOmitConfig | undefined>, {
8
8
  result: {};
9
9
  model: {};
10
10
  query: {};
11
11
  client: {};
12
12
  }>;
13
13
  export type ExtendedPrismaClient = ReturnType<typeof createPrismaClient>;
14
- export declare const prisma: import("@prisma/client/runtime/client").DynamicClientExtensionThis<import("../prisma/generated/internal/prismaNamespace.js").TypeMap<import("@prisma/client/runtime/client").InternalArgs & {
14
+ export declare const prisma: import("@prisma/client/runtime/client").DynamicClientExtensionThis<Prisma.TypeMap<import("@prisma/client/runtime/client").InternalArgs & {
15
15
  result: {};
16
16
  model: {};
17
17
  query: {};
18
18
  client: {};
19
- }, import("../prisma/generated/internal/prismaNamespace.js").GlobalOmitConfig | undefined>, import("../prisma/generated/internal/prismaNamespace.js").TypeMapCb<import("../prisma/generated/internal/prismaNamespace.js").GlobalOmitConfig | undefined>, {
19
+ }, Prisma.GlobalOmitConfig | undefined>, Prisma.TypeMapCb<Prisma.GlobalOmitConfig | undefined>, {
20
20
  result: {};
21
21
  model: {};
22
22
  query: {};
23
23
  client: {};
24
24
  }>;
25
- export { PrismaClient };
25
+ export { Prisma, PrismaClient };
26
26
  export default prisma;
27
27
  //# sourceMappingURL=client.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAO7D,iBAAS,kBAAkB;;;;;;;;;;GAyC1B;AAwED,MAAM,MAAM,oBAAoB,GAAG,UAAU,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAMzE,eAAO,MAAM,MAAM;;;;;;;;;;EAC6C,CAAC;AAMjE,OAAO,EAAE,YAAY,EAAE,CAAC;AACxB,eAAe,MAAM,CAAC"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAOrE,iBAAS,kBAAkB;;;;;;;;;;GAyC1B;AAwED,MAAM,MAAM,oBAAoB,GAAG,UAAU,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAMzE,eAAO,MAAM,MAAM;;;;;;;;;;EAC6C,CAAC;AAMjE,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC;AAChC,eAAe,MAAM,CAAC"}
@@ -1,9 +1,9 @@
1
- import { PrismaClient } from '../../prisma/supabase/generated/client.js';
1
+ import { Prisma, PrismaClient } from "../../prisma/supabase/generated/client.js";
2
2
  /**
3
3
  * Supabase 데이터베이스용 Prisma 클라이언트
4
4
  * Chat, Push, 관리자 세션/인증 등을 위한 별도 DB 연결
5
5
  */
6
6
  export declare const supabasePrisma: PrismaClient;
7
- export { PrismaClient as SupabasePrismaClient };
7
+ export { Prisma as SupabasePrisma, PrismaClient as SupabasePrismaClient };
8
8
  export default supabasePrisma;
9
9
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/supabase/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,2CAA2C,CAAC;AA+BzE;;;GAGG;AACH,eAAO,MAAM,cAAc,cAAyE,CAAC;AAMrG,OAAO,EAAE,YAAY,IAAI,oBAAoB,EAAE,CAAC;AAChD,eAAe,cAAc,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/supabase/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,MAAM,EACN,YAAY,EACb,MAAM,2CAA2C,CAAC;AAkCnD;;;GAGG;AACH,eAAO,MAAM,cAAc,cAC6C,CAAC;AAMzE,OAAO,EAAE,MAAM,IAAI,cAAc,EAAE,YAAY,IAAI,oBAAoB,EAAE,CAAC;AAC1E,eAAe,cAAc,CAAC"}
@@ -1,9 +1,9 @@
1
+ import { __export } from '../chunk-PZ5AY32C.js';
1
2
  import * as path from 'path';
2
3
  import { fileURLToPath } from 'url';
3
4
  import * as runtime2 from '@prisma/client/runtime/client';
4
5
  import { PrismaPg } from '@prisma/adapter-pg';
5
6
 
6
- // prisma/supabase/generated/client.ts
7
7
  var config = {
8
8
  "previewFeatures": [],
9
9
  "clientVersion": "7.3.0",
@@ -33,19 +33,194 @@ config.compilerWasm = {
33
33
  function getPrismaClientClass() {
34
34
  return runtime2.getPrismaClient(config);
35
35
  }
36
- runtime2.Extensions.getExtensionContext;
37
- ({
36
+
37
+ // prisma/supabase/generated/internal/prismaNamespace.ts
38
+ var prismaNamespace_exports = {};
39
+ __export(prismaNamespace_exports, {
40
+ AdminSessionScalarFieldEnum: () => AdminSessionScalarFieldEnum,
41
+ AdminVerificationCodeScalarFieldEnum: () => AdminVerificationCodeScalarFieldEnum,
42
+ AnyNull: () => AnyNull2,
43
+ ChatRoomScalarFieldEnum: () => ChatRoomScalarFieldEnum,
44
+ ChatScalarFieldEnum: () => ChatScalarFieldEnum,
45
+ DbNull: () => DbNull2,
46
+ Decimal: () => Decimal2,
47
+ JsonNull: () => JsonNull2,
48
+ JsonNullValueFilter: () => JsonNullValueFilter,
49
+ JsonNullValueInput: () => JsonNullValueInput,
50
+ ModelName: () => ModelName,
51
+ NullTypes: () => NullTypes2,
52
+ NullsOrder: () => NullsOrder,
53
+ PrismaClientInitializationError: () => PrismaClientInitializationError2,
54
+ PrismaClientKnownRequestError: () => PrismaClientKnownRequestError2,
55
+ PrismaClientRustPanicError: () => PrismaClientRustPanicError2,
56
+ PrismaClientUnknownRequestError: () => PrismaClientUnknownRequestError2,
57
+ PrismaClientValidationError: () => PrismaClientValidationError2,
58
+ PushScalarFieldEnum: () => PushScalarFieldEnum,
59
+ QueryMode: () => QueryMode,
60
+ RecallNoticeLogScalarFieldEnum: () => RecallNoticeLogScalarFieldEnum,
61
+ SortOrder: () => SortOrder,
62
+ Sql: () => Sql2,
63
+ TransactionIsolationLevel: () => TransactionIsolationLevel,
64
+ UserOnChatRoomScalarFieldEnum: () => UserOnChatRoomScalarFieldEnum,
65
+ UserScalarFieldEnum: () => UserScalarFieldEnum,
66
+ defineExtension: () => defineExtension,
67
+ empty: () => empty2,
68
+ getExtensionContext: () => getExtensionContext,
69
+ join: () => join2,
70
+ prismaVersion: () => prismaVersion,
71
+ raw: () => raw2,
72
+ sql: () => sql
73
+ });
74
+ var PrismaClientKnownRequestError2 = runtime2.PrismaClientKnownRequestError;
75
+ var PrismaClientUnknownRequestError2 = runtime2.PrismaClientUnknownRequestError;
76
+ var PrismaClientRustPanicError2 = runtime2.PrismaClientRustPanicError;
77
+ var PrismaClientInitializationError2 = runtime2.PrismaClientInitializationError;
78
+ var PrismaClientValidationError2 = runtime2.PrismaClientValidationError;
79
+ var sql = runtime2.sqltag;
80
+ var empty2 = runtime2.empty;
81
+ var join2 = runtime2.join;
82
+ var raw2 = runtime2.raw;
83
+ var Sql2 = runtime2.Sql;
84
+ var Decimal2 = runtime2.Decimal;
85
+ var getExtensionContext = runtime2.Extensions.getExtensionContext;
86
+ var prismaVersion = {
87
+ client: "7.3.0",
88
+ engine: "9d6ad21cbbceab97458517b147a6a09ff43aa735"
89
+ };
90
+ var NullTypes2 = {
38
91
  DbNull: runtime2.NullTypes.DbNull,
39
92
  JsonNull: runtime2.NullTypes.JsonNull,
40
93
  AnyNull: runtime2.NullTypes.AnyNull
41
- });
42
- runtime2.makeStrictEnum({
94
+ };
95
+ var DbNull2 = runtime2.DbNull;
96
+ var JsonNull2 = runtime2.JsonNull;
97
+ var AnyNull2 = runtime2.AnyNull;
98
+ var ModelName = {
99
+ ChatRoom: "ChatRoom",
100
+ User: "User",
101
+ Chat: "Chat",
102
+ UserOnChatRoom: "UserOnChatRoom",
103
+ Push: "Push",
104
+ RecallNoticeLog: "RecallNoticeLog",
105
+ AdminVerificationCode: "AdminVerificationCode",
106
+ AdminSession: "AdminSession"
107
+ };
108
+ var TransactionIsolationLevel = runtime2.makeStrictEnum({
43
109
  ReadUncommitted: "ReadUncommitted",
44
110
  ReadCommitted: "ReadCommitted",
45
111
  RepeatableRead: "RepeatableRead",
46
112
  Serializable: "Serializable"
47
113
  });
48
- runtime2.Extensions.defineExtension;
114
+ var ChatRoomScalarFieldEnum = {
115
+ id: "id",
116
+ createdAt: "createdAt",
117
+ roomId: "roomId",
118
+ title: "title",
119
+ topic: "topic",
120
+ topicId: "topicId"
121
+ };
122
+ var UserScalarFieldEnum = {
123
+ id: "id",
124
+ createdAt: "createdAt",
125
+ externalUserId: "externalUserId",
126
+ name: "name",
127
+ isAdAgreed: "isAdAgreed",
128
+ adAgreedAt: "adAgreedAt",
129
+ isBenefitAgreed: "isBenefitAgreed",
130
+ benefitAgreedAt: "benefitAgreedAt",
131
+ isCommunityAgreed: "isCommunityAgreed",
132
+ communityAgreedAt: "communityAgreedAt"
133
+ };
134
+ var ChatScalarFieldEnum = {
135
+ id: "id",
136
+ createdAt: "createdAt",
137
+ chatRoom: "chatRoom",
138
+ content: "content",
139
+ user: "user",
140
+ isAttachment: "isAttachment"
141
+ };
142
+ var UserOnChatRoomScalarFieldEnum = {
143
+ id: "id",
144
+ createdAt: "createdAt",
145
+ userId: "userId",
146
+ chatRoom: "chatRoom",
147
+ lastSeenAt: "lastSeenAt"
148
+ };
149
+ var PushScalarFieldEnum = {
150
+ id: "id",
151
+ userId: "userId",
152
+ pushName: "pushName",
153
+ title: "title",
154
+ description: "description",
155
+ link: "link",
156
+ iconUrl: "iconUrl",
157
+ sendAt: "sendAt",
158
+ readAt: "readAt",
159
+ createdAt: "createdAt",
160
+ iosAttachmentsId: "iosAttachmentsId",
161
+ pushType: "pushType",
162
+ pushId: "pushId",
163
+ category: "category"
164
+ };
165
+ var RecallNoticeLogScalarFieldEnum = {
166
+ id: "id",
167
+ createdAt: "createdAt",
168
+ batchId: "batchId",
169
+ userId: "userId",
170
+ userName: "userName",
171
+ contactNumber: "contactNumber",
172
+ vin: "vin",
173
+ source: "source",
174
+ subscriptionCheckoutId: "subscriptionCheckoutId",
175
+ message: "message",
176
+ recallContentText: "recallContentText",
177
+ recallContentImageUrl: "recallContentImageUrl",
178
+ status: "status",
179
+ error: "error"
180
+ };
181
+ var AdminVerificationCodeScalarFieldEnum = {
182
+ id: "id",
183
+ createdAt: "createdAt",
184
+ email: "email",
185
+ code: "code",
186
+ expiresAt: "expiresAt",
187
+ userData: "userData",
188
+ used: "used"
189
+ };
190
+ var AdminSessionScalarFieldEnum = {
191
+ id: "id",
192
+ createdAt: "createdAt",
193
+ updatedAt: "updatedAt",
194
+ sessionToken: "sessionToken",
195
+ adminId: "adminId",
196
+ email: "email",
197
+ adminName: "adminName",
198
+ encryptedStrapiToken: "encryptedStrapiToken",
199
+ encryptedWmsToken: "encryptedWmsToken",
200
+ expiresAt: "expiresAt",
201
+ lastAccessedAt: "lastAccessedAt"
202
+ };
203
+ var SortOrder = {
204
+ asc: "asc",
205
+ desc: "desc"
206
+ };
207
+ var JsonNullValueInput = {
208
+ JsonNull: JsonNull2
209
+ };
210
+ var QueryMode = {
211
+ default: "default",
212
+ insensitive: "insensitive"
213
+ };
214
+ var NullsOrder = {
215
+ first: "first",
216
+ last: "last"
217
+ };
218
+ var JsonNullValueFilter = {
219
+ DbNull: DbNull2,
220
+ JsonNull: JsonNull2,
221
+ AnyNull: AnyNull2
222
+ };
223
+ var defineExtension = runtime2.Extensions.defineExtension;
49
224
 
50
225
  // prisma/supabase/generated/client.ts
51
226
  globalThis["__dirname"] = path.dirname(fileURLToPath(import.meta.url));
@@ -72,6 +247,6 @@ if (process.env.NODE_ENV !== "production") {
72
247
  }
73
248
  var supabase_default = supabasePrisma;
74
249
 
75
- export { PrismaClient as SupabasePrismaClient, supabase_default as default, supabasePrisma };
250
+ export { prismaNamespace_exports as SupabasePrisma, PrismaClient as SupabasePrismaClient, supabase_default as default, supabasePrisma };
76
251
  //# sourceMappingURL=index.js.map
77
252
  //# sourceMappingURL=index.js.map