remove normalization, fix import issues
This commit is contained in:
@@ -0,0 +1,21 @@
|
||||
-- RedefineTables
|
||||
PRAGMA defer_foreign_keys=ON;
|
||||
PRAGMA foreign_keys=OFF;
|
||||
CREATE TABLE "new_Drawing" (
|
||||
"id" TEXT NOT NULL PRIMARY KEY,
|
||||
"name" TEXT NOT NULL,
|
||||
"elements" TEXT NOT NULL,
|
||||
"appState" TEXT NOT NULL,
|
||||
"files" TEXT NOT NULL DEFAULT '{}',
|
||||
"preview" TEXT,
|
||||
"version" INTEGER NOT NULL DEFAULT 1,
|
||||
"collectionId" TEXT,
|
||||
"createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"updatedAt" DATETIME NOT NULL,
|
||||
CONSTRAINT "Drawing_collectionId_fkey" FOREIGN KEY ("collectionId") REFERENCES "Collection" ("id") ON DELETE SET NULL ON UPDATE CASCADE
|
||||
);
|
||||
INSERT INTO "new_Drawing" ("appState", "collectionId", "createdAt", "elements", "id", "name", "preview", "updatedAt", "version") SELECT "appState", "collectionId", "createdAt", "elements", "id", "name", "preview", "updatedAt", "version" FROM "Drawing";
|
||||
DROP TABLE "Drawing";
|
||||
ALTER TABLE "new_Drawing" RENAME TO "Drawing";
|
||||
PRAGMA foreign_keys=ON;
|
||||
PRAGMA defer_foreign_keys=OFF;
|
||||
@@ -24,6 +24,7 @@ model Drawing {
|
||||
name String
|
||||
elements String // Stored as JSON string
|
||||
appState String // Stored as JSON string
|
||||
files String @default("{}") // Stored as JSON string
|
||||
preview String? // SVG string for thumbnail
|
||||
version Int @default(1)
|
||||
collectionId String?
|
||||
|
||||
@@ -99,6 +99,7 @@ exports.Prisma.DrawingScalarFieldEnum = {
|
||||
name: 'name',
|
||||
elements: 'elements',
|
||||
appState: 'appState',
|
||||
files: 'files',
|
||||
preview: 'preview',
|
||||
version: 'version',
|
||||
collectionId: 'collectionId',
|
||||
@@ -168,13 +169,13 @@ const config = {
|
||||
}
|
||||
}
|
||||
},
|
||||
"inlineSchema": "// This is your Prisma schema file,\n// learn more about it in the docs: https://pris.ly/d/prisma-schema\n\ngenerator client {\n provider = \"prisma-client-js\"\n output = \"../src/generated/client\"\n}\n\ndatasource db {\n provider = \"sqlite\"\n url = env(\"DATABASE_URL\")\n}\n\nmodel Collection {\n id String @id @default(uuid())\n name String\n drawings Drawing[]\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n}\n\nmodel Drawing {\n id String @id @default(uuid())\n name String\n elements String // Stored as JSON string\n appState String // Stored as JSON string\n preview String? // SVG string for thumbnail\n version Int @default(1)\n collectionId String?\n collection Collection? @relation(fields: [collectionId], references: [id])\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n}\n",
|
||||
"inlineSchemaHash": "67e1a3789d22e31866fa8b498914744bb15a8743c766f6c9cb36263d6b7740a9",
|
||||
"inlineSchema": "// This is your Prisma schema file,\n// learn more about it in the docs: https://pris.ly/d/prisma-schema\n\ngenerator client {\n provider = \"prisma-client-js\"\n output = \"../src/generated/client\"\n}\n\ndatasource db {\n provider = \"sqlite\"\n url = env(\"DATABASE_URL\")\n}\n\nmodel Collection {\n id String @id @default(uuid())\n name String\n drawings Drawing[]\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n}\n\nmodel Drawing {\n id String @id @default(uuid())\n name String\n elements String // Stored as JSON string\n appState String // Stored as JSON string\n files String @default(\"{}\") // Stored as JSON string\n preview String? // SVG string for thumbnail\n version Int @default(1)\n collectionId String?\n collection Collection? @relation(fields: [collectionId], references: [id])\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n}\n",
|
||||
"inlineSchemaHash": "e43b17bb99e7f864b5a0f2c54951015f0a3d998329d0577afda58e7c0dee4919",
|
||||
"copyEngine": true
|
||||
}
|
||||
config.dirname = '/'
|
||||
|
||||
config.runtimeDataModel = JSON.parse("{\"models\":{\"Collection\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"uuid(4)\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"name\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"drawings\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Drawing\",\"relationName\":\"CollectionToDrawing\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":true}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"Drawing\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"uuid(4)\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"name\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"elements\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"appState\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"preview\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"version\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Int\",\"default\":1,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"collectionId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"collection\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Collection\",\"relationName\":\"CollectionToDrawing\",\"relationFromFields\":[\"collectionId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":true}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false}},\"enums\":{},\"types\":{}}")
|
||||
config.runtimeDataModel = JSON.parse("{\"models\":{\"Collection\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"uuid(4)\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"name\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"drawings\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Drawing\",\"relationName\":\"CollectionToDrawing\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":true}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"Drawing\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"uuid(4)\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"name\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"elements\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"appState\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"files\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":\"{}\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"preview\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"version\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Int\",\"default\":1,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"collectionId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"collection\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Collection\",\"relationName\":\"CollectionToDrawing\",\"relationFromFields\":[\"collectionId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":true}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false}},\"enums\":{},\"types\":{}}")
|
||||
defineDmmfProperty(exports.Prisma, config.runtimeDataModel)
|
||||
config.engineWasm = undefined
|
||||
|
||||
|
||||
@@ -131,6 +131,7 @@ exports.Prisma.DrawingScalarFieldEnum = {
|
||||
name: 'name',
|
||||
elements: 'elements',
|
||||
appState: 'appState',
|
||||
files: 'files',
|
||||
preview: 'preview',
|
||||
version: 'version',
|
||||
collectionId: 'collectionId',
|
||||
|
||||
+35
@@ -1918,6 +1918,7 @@ export namespace Prisma {
|
||||
name: string | null
|
||||
elements: string | null
|
||||
appState: string | null
|
||||
files: string | null
|
||||
preview: string | null
|
||||
version: number | null
|
||||
collectionId: string | null
|
||||
@@ -1930,6 +1931,7 @@ export namespace Prisma {
|
||||
name: string | null
|
||||
elements: string | null
|
||||
appState: string | null
|
||||
files: string | null
|
||||
preview: string | null
|
||||
version: number | null
|
||||
collectionId: string | null
|
||||
@@ -1942,6 +1944,7 @@ export namespace Prisma {
|
||||
name: number
|
||||
elements: number
|
||||
appState: number
|
||||
files: number
|
||||
preview: number
|
||||
version: number
|
||||
collectionId: number
|
||||
@@ -1964,6 +1967,7 @@ export namespace Prisma {
|
||||
name?: true
|
||||
elements?: true
|
||||
appState?: true
|
||||
files?: true
|
||||
preview?: true
|
||||
version?: true
|
||||
collectionId?: true
|
||||
@@ -1976,6 +1980,7 @@ export namespace Prisma {
|
||||
name?: true
|
||||
elements?: true
|
||||
appState?: true
|
||||
files?: true
|
||||
preview?: true
|
||||
version?: true
|
||||
collectionId?: true
|
||||
@@ -1988,6 +1993,7 @@ export namespace Prisma {
|
||||
name?: true
|
||||
elements?: true
|
||||
appState?: true
|
||||
files?: true
|
||||
preview?: true
|
||||
version?: true
|
||||
collectionId?: true
|
||||
@@ -2087,6 +2093,7 @@ export namespace Prisma {
|
||||
name: string
|
||||
elements: string
|
||||
appState: string
|
||||
files: string
|
||||
preview: string | null
|
||||
version: number
|
||||
collectionId: string | null
|
||||
@@ -2118,6 +2125,7 @@ export namespace Prisma {
|
||||
name?: boolean
|
||||
elements?: boolean
|
||||
appState?: boolean
|
||||
files?: boolean
|
||||
preview?: boolean
|
||||
version?: boolean
|
||||
collectionId?: boolean
|
||||
@@ -2131,6 +2139,7 @@ export namespace Prisma {
|
||||
name?: boolean
|
||||
elements?: boolean
|
||||
appState?: boolean
|
||||
files?: boolean
|
||||
preview?: boolean
|
||||
version?: boolean
|
||||
collectionId?: boolean
|
||||
@@ -2144,6 +2153,7 @@ export namespace Prisma {
|
||||
name?: boolean
|
||||
elements?: boolean
|
||||
appState?: boolean
|
||||
files?: boolean
|
||||
preview?: boolean
|
||||
version?: boolean
|
||||
collectionId?: boolean
|
||||
@@ -2168,6 +2178,7 @@ export namespace Prisma {
|
||||
name: string
|
||||
elements: string
|
||||
appState: string
|
||||
files: string
|
||||
preview: string | null
|
||||
version: number
|
||||
collectionId: string | null
|
||||
@@ -2571,6 +2582,7 @@ export namespace Prisma {
|
||||
readonly name: FieldRef<"Drawing", 'String'>
|
||||
readonly elements: FieldRef<"Drawing", 'String'>
|
||||
readonly appState: FieldRef<"Drawing", 'String'>
|
||||
readonly files: FieldRef<"Drawing", 'String'>
|
||||
readonly preview: FieldRef<"Drawing", 'String'>
|
||||
readonly version: FieldRef<"Drawing", 'Int'>
|
||||
readonly collectionId: FieldRef<"Drawing", 'String'>
|
||||
@@ -2947,6 +2959,7 @@ export namespace Prisma {
|
||||
name: 'name',
|
||||
elements: 'elements',
|
||||
appState: 'appState',
|
||||
files: 'files',
|
||||
preview: 'preview',
|
||||
version: 'version',
|
||||
collectionId: 'collectionId',
|
||||
@@ -3067,6 +3080,7 @@ export namespace Prisma {
|
||||
name?: StringFilter<"Drawing"> | string
|
||||
elements?: StringFilter<"Drawing"> | string
|
||||
appState?: StringFilter<"Drawing"> | string
|
||||
files?: StringFilter<"Drawing"> | string
|
||||
preview?: StringNullableFilter<"Drawing"> | string | null
|
||||
version?: IntFilter<"Drawing"> | number
|
||||
collectionId?: StringNullableFilter<"Drawing"> | string | null
|
||||
@@ -3080,6 +3094,7 @@ export namespace Prisma {
|
||||
name?: SortOrder
|
||||
elements?: SortOrder
|
||||
appState?: SortOrder
|
||||
files?: SortOrder
|
||||
preview?: SortOrderInput | SortOrder
|
||||
version?: SortOrder
|
||||
collectionId?: SortOrderInput | SortOrder
|
||||
@@ -3096,6 +3111,7 @@ export namespace Prisma {
|
||||
name?: StringFilter<"Drawing"> | string
|
||||
elements?: StringFilter<"Drawing"> | string
|
||||
appState?: StringFilter<"Drawing"> | string
|
||||
files?: StringFilter<"Drawing"> | string
|
||||
preview?: StringNullableFilter<"Drawing"> | string | null
|
||||
version?: IntFilter<"Drawing"> | number
|
||||
collectionId?: StringNullableFilter<"Drawing"> | string | null
|
||||
@@ -3109,6 +3125,7 @@ export namespace Prisma {
|
||||
name?: SortOrder
|
||||
elements?: SortOrder
|
||||
appState?: SortOrder
|
||||
files?: SortOrder
|
||||
preview?: SortOrderInput | SortOrder
|
||||
version?: SortOrder
|
||||
collectionId?: SortOrderInput | SortOrder
|
||||
@@ -3129,6 +3146,7 @@ export namespace Prisma {
|
||||
name?: StringWithAggregatesFilter<"Drawing"> | string
|
||||
elements?: StringWithAggregatesFilter<"Drawing"> | string
|
||||
appState?: StringWithAggregatesFilter<"Drawing"> | string
|
||||
files?: StringWithAggregatesFilter<"Drawing"> | string
|
||||
preview?: StringNullableWithAggregatesFilter<"Drawing"> | string | null
|
||||
version?: IntWithAggregatesFilter<"Drawing"> | number
|
||||
collectionId?: StringNullableWithAggregatesFilter<"Drawing"> | string | null
|
||||
@@ -3194,6 +3212,7 @@ export namespace Prisma {
|
||||
name: string
|
||||
elements: string
|
||||
appState: string
|
||||
files?: string
|
||||
preview?: string | null
|
||||
version?: number
|
||||
createdAt?: Date | string
|
||||
@@ -3206,6 +3225,7 @@ export namespace Prisma {
|
||||
name: string
|
||||
elements: string
|
||||
appState: string
|
||||
files?: string
|
||||
preview?: string | null
|
||||
version?: number
|
||||
collectionId?: string | null
|
||||
@@ -3218,6 +3238,7 @@ export namespace Prisma {
|
||||
name?: StringFieldUpdateOperationsInput | string
|
||||
elements?: StringFieldUpdateOperationsInput | string
|
||||
appState?: StringFieldUpdateOperationsInput | string
|
||||
files?: StringFieldUpdateOperationsInput | string
|
||||
preview?: NullableStringFieldUpdateOperationsInput | string | null
|
||||
version?: IntFieldUpdateOperationsInput | number
|
||||
createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
|
||||
@@ -3230,6 +3251,7 @@ export namespace Prisma {
|
||||
name?: StringFieldUpdateOperationsInput | string
|
||||
elements?: StringFieldUpdateOperationsInput | string
|
||||
appState?: StringFieldUpdateOperationsInput | string
|
||||
files?: StringFieldUpdateOperationsInput | string
|
||||
preview?: NullableStringFieldUpdateOperationsInput | string | null
|
||||
version?: IntFieldUpdateOperationsInput | number
|
||||
collectionId?: NullableStringFieldUpdateOperationsInput | string | null
|
||||
@@ -3242,6 +3264,7 @@ export namespace Prisma {
|
||||
name: string
|
||||
elements: string
|
||||
appState: string
|
||||
files?: string
|
||||
preview?: string | null
|
||||
version?: number
|
||||
collectionId?: string | null
|
||||
@@ -3254,6 +3277,7 @@ export namespace Prisma {
|
||||
name?: StringFieldUpdateOperationsInput | string
|
||||
elements?: StringFieldUpdateOperationsInput | string
|
||||
appState?: StringFieldUpdateOperationsInput | string
|
||||
files?: StringFieldUpdateOperationsInput | string
|
||||
preview?: NullableStringFieldUpdateOperationsInput | string | null
|
||||
version?: IntFieldUpdateOperationsInput | number
|
||||
createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
|
||||
@@ -3265,6 +3289,7 @@ export namespace Prisma {
|
||||
name?: StringFieldUpdateOperationsInput | string
|
||||
elements?: StringFieldUpdateOperationsInput | string
|
||||
appState?: StringFieldUpdateOperationsInput | string
|
||||
files?: StringFieldUpdateOperationsInput | string
|
||||
preview?: NullableStringFieldUpdateOperationsInput | string | null
|
||||
version?: IntFieldUpdateOperationsInput | number
|
||||
collectionId?: NullableStringFieldUpdateOperationsInput | string | null
|
||||
@@ -3399,6 +3424,7 @@ export namespace Prisma {
|
||||
name?: SortOrder
|
||||
elements?: SortOrder
|
||||
appState?: SortOrder
|
||||
files?: SortOrder
|
||||
preview?: SortOrder
|
||||
version?: SortOrder
|
||||
collectionId?: SortOrder
|
||||
@@ -3415,6 +3441,7 @@ export namespace Prisma {
|
||||
name?: SortOrder
|
||||
elements?: SortOrder
|
||||
appState?: SortOrder
|
||||
files?: SortOrder
|
||||
preview?: SortOrder
|
||||
version?: SortOrder
|
||||
collectionId?: SortOrder
|
||||
@@ -3427,6 +3454,7 @@ export namespace Prisma {
|
||||
name?: SortOrder
|
||||
elements?: SortOrder
|
||||
appState?: SortOrder
|
||||
files?: SortOrder
|
||||
preview?: SortOrder
|
||||
version?: SortOrder
|
||||
collectionId?: SortOrder
|
||||
@@ -3690,6 +3718,7 @@ export namespace Prisma {
|
||||
name: string
|
||||
elements: string
|
||||
appState: string
|
||||
files?: string
|
||||
preview?: string | null
|
||||
version?: number
|
||||
createdAt?: Date | string
|
||||
@@ -3701,6 +3730,7 @@ export namespace Prisma {
|
||||
name: string
|
||||
elements: string
|
||||
appState: string
|
||||
files?: string
|
||||
preview?: string | null
|
||||
version?: number
|
||||
createdAt?: Date | string
|
||||
@@ -3740,6 +3770,7 @@ export namespace Prisma {
|
||||
name?: StringFilter<"Drawing"> | string
|
||||
elements?: StringFilter<"Drawing"> | string
|
||||
appState?: StringFilter<"Drawing"> | string
|
||||
files?: StringFilter<"Drawing"> | string
|
||||
preview?: StringNullableFilter<"Drawing"> | string | null
|
||||
version?: IntFilter<"Drawing"> | number
|
||||
collectionId?: StringNullableFilter<"Drawing"> | string | null
|
||||
@@ -3796,6 +3827,7 @@ export namespace Prisma {
|
||||
name: string
|
||||
elements: string
|
||||
appState: string
|
||||
files?: string
|
||||
preview?: string | null
|
||||
version?: number
|
||||
createdAt?: Date | string
|
||||
@@ -3807,6 +3839,7 @@ export namespace Prisma {
|
||||
name?: StringFieldUpdateOperationsInput | string
|
||||
elements?: StringFieldUpdateOperationsInput | string
|
||||
appState?: StringFieldUpdateOperationsInput | string
|
||||
files?: StringFieldUpdateOperationsInput | string
|
||||
preview?: NullableStringFieldUpdateOperationsInput | string | null
|
||||
version?: IntFieldUpdateOperationsInput | number
|
||||
createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
|
||||
@@ -3818,6 +3851,7 @@ export namespace Prisma {
|
||||
name?: StringFieldUpdateOperationsInput | string
|
||||
elements?: StringFieldUpdateOperationsInput | string
|
||||
appState?: StringFieldUpdateOperationsInput | string
|
||||
files?: StringFieldUpdateOperationsInput | string
|
||||
preview?: NullableStringFieldUpdateOperationsInput | string | null
|
||||
version?: IntFieldUpdateOperationsInput | number
|
||||
createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
|
||||
@@ -3829,6 +3863,7 @@ export namespace Prisma {
|
||||
name?: StringFieldUpdateOperationsInput | string
|
||||
elements?: StringFieldUpdateOperationsInput | string
|
||||
appState?: StringFieldUpdateOperationsInput | string
|
||||
files?: StringFieldUpdateOperationsInput | string
|
||||
preview?: NullableStringFieldUpdateOperationsInput | string | null
|
||||
version?: IntFieldUpdateOperationsInput | number
|
||||
createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
|
||||
|
||||
@@ -100,6 +100,7 @@ exports.Prisma.DrawingScalarFieldEnum = {
|
||||
name: 'name',
|
||||
elements: 'elements',
|
||||
appState: 'appState',
|
||||
files: 'files',
|
||||
preview: 'preview',
|
||||
version: 'version',
|
||||
collectionId: 'collectionId',
|
||||
@@ -169,8 +170,8 @@ const config = {
|
||||
}
|
||||
}
|
||||
},
|
||||
"inlineSchema": "// This is your Prisma schema file,\n// learn more about it in the docs: https://pris.ly/d/prisma-schema\n\ngenerator client {\n provider = \"prisma-client-js\"\n output = \"../src/generated/client\"\n}\n\ndatasource db {\n provider = \"sqlite\"\n url = env(\"DATABASE_URL\")\n}\n\nmodel Collection {\n id String @id @default(uuid())\n name String\n drawings Drawing[]\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n}\n\nmodel Drawing {\n id String @id @default(uuid())\n name String\n elements String // Stored as JSON string\n appState String // Stored as JSON string\n preview String? // SVG string for thumbnail\n version Int @default(1)\n collectionId String?\n collection Collection? @relation(fields: [collectionId], references: [id])\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n}\n",
|
||||
"inlineSchemaHash": "67e1a3789d22e31866fa8b498914744bb15a8743c766f6c9cb36263d6b7740a9",
|
||||
"inlineSchema": "// This is your Prisma schema file,\n// learn more about it in the docs: https://pris.ly/d/prisma-schema\n\ngenerator client {\n provider = \"prisma-client-js\"\n output = \"../src/generated/client\"\n}\n\ndatasource db {\n provider = \"sqlite\"\n url = env(\"DATABASE_URL\")\n}\n\nmodel Collection {\n id String @id @default(uuid())\n name String\n drawings Drawing[]\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n}\n\nmodel Drawing {\n id String @id @default(uuid())\n name String\n elements String // Stored as JSON string\n appState String // Stored as JSON string\n files String @default(\"{}\") // Stored as JSON string\n preview String? // SVG string for thumbnail\n version Int @default(1)\n collectionId String?\n collection Collection? @relation(fields: [collectionId], references: [id])\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n}\n",
|
||||
"inlineSchemaHash": "e43b17bb99e7f864b5a0f2c54951015f0a3d998329d0577afda58e7c0dee4919",
|
||||
"copyEngine": true
|
||||
}
|
||||
|
||||
@@ -191,7 +192,7 @@ if (!fs.existsSync(path.join(__dirname, 'schema.prisma'))) {
|
||||
config.isBundled = true
|
||||
}
|
||||
|
||||
config.runtimeDataModel = JSON.parse("{\"models\":{\"Collection\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"uuid(4)\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"name\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"drawings\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Drawing\",\"relationName\":\"CollectionToDrawing\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":true}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"Drawing\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"uuid(4)\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"name\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"elements\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"appState\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"preview\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"version\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Int\",\"default\":1,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"collectionId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"collection\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Collection\",\"relationName\":\"CollectionToDrawing\",\"relationFromFields\":[\"collectionId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":true}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false}},\"enums\":{},\"types\":{}}")
|
||||
config.runtimeDataModel = JSON.parse("{\"models\":{\"Collection\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"uuid(4)\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"name\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"drawings\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Drawing\",\"relationName\":\"CollectionToDrawing\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":true}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"Drawing\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":{\"name\":\"uuid(4)\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"name\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"elements\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"appState\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"files\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"default\":\"{}\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"preview\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"version\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Int\",\"default\":1,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"collectionId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"collection\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Collection\",\"relationName\":\"CollectionToDrawing\",\"relationFromFields\":[\"collectionId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":true}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false}},\"enums\":{},\"types\":{}}")
|
||||
defineDmmfProperty(exports.Prisma, config.runtimeDataModel)
|
||||
config.engineWasm = undefined
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"name": "prisma-client-3ebeea41bd8603a2c294a840f7d22c864ae7fc82298676ca177ef806525c6187",
|
||||
"name": "prisma-client-0eff54f2002515791cbb1f1a5b1632637c7e46544d107e5ff89b7092d9540808",
|
||||
"main": "index.js",
|
||||
"types": "index.d.ts",
|
||||
"browser": "index-browser.js",
|
||||
|
||||
@@ -24,6 +24,7 @@ model Drawing {
|
||||
name String
|
||||
elements String // Stored as JSON string
|
||||
appState String // Stored as JSON string
|
||||
files String @default("{}") // Stored as JSON string
|
||||
preview String? // SVG string for thumbnail
|
||||
version Int @default(1)
|
||||
collectionId String?
|
||||
|
||||
@@ -131,6 +131,7 @@ exports.Prisma.DrawingScalarFieldEnum = {
|
||||
name: 'name',
|
||||
elements: 'elements',
|
||||
appState: 'appState',
|
||||
files: 'files',
|
||||
preview: 'preview',
|
||||
version: 'version',
|
||||
collectionId: 'collectionId',
|
||||
|
||||
+11
-2
@@ -135,6 +135,7 @@ app.get("/drawings", async (req, res) => {
|
||||
...d,
|
||||
elements: JSON.parse(d.elements),
|
||||
appState: JSON.parse(d.appState),
|
||||
files: JSON.parse(d.files || "{}"),
|
||||
}));
|
||||
|
||||
res.json(parsedDrawings);
|
||||
@@ -172,6 +173,7 @@ app.get("/drawings/:id", async (req, res) => {
|
||||
...drawing,
|
||||
elements: JSON.parse(drawing.elements),
|
||||
appState: JSON.parse(drawing.appState),
|
||||
files: JSON.parse(drawing.files || "{}"),
|
||||
});
|
||||
} catch (error) {
|
||||
res.status(500).json({ error: "Failed to fetch drawing" });
|
||||
@@ -181,7 +183,7 @@ app.get("/drawings/:id", async (req, res) => {
|
||||
// POST /drawings
|
||||
app.post("/drawings", async (req, res) => {
|
||||
try {
|
||||
const { name, elements, appState, collectionId, preview } = req.body;
|
||||
const { name, elements, appState, collectionId, preview, files } = req.body;
|
||||
|
||||
const newDrawing = await prisma.drawing.create({
|
||||
data: {
|
||||
@@ -190,6 +192,7 @@ app.post("/drawings", async (req, res) => {
|
||||
appState: JSON.stringify(appState || {}),
|
||||
collectionId: collectionId || null,
|
||||
preview: preview || null,
|
||||
files: JSON.stringify(files || {}),
|
||||
},
|
||||
});
|
||||
|
||||
@@ -197,6 +200,7 @@ app.post("/drawings", async (req, res) => {
|
||||
...newDrawing,
|
||||
elements: JSON.parse(newDrawing.elements),
|
||||
appState: JSON.parse(newDrawing.appState),
|
||||
files: JSON.parse(newDrawing.files || "{}"),
|
||||
});
|
||||
} catch (error) {
|
||||
res.status(500).json({ error: "Failed to create drawing" });
|
||||
@@ -207,7 +211,7 @@ app.post("/drawings", async (req, res) => {
|
||||
app.put("/drawings/:id", async (req, res) => {
|
||||
try {
|
||||
const { id } = req.params;
|
||||
const { name, elements, appState, collectionId, preview } = req.body;
|
||||
const { name, elements, appState, collectionId, preview, files } = req.body;
|
||||
|
||||
console.log("[API] Updating drawing", {
|
||||
id,
|
||||
@@ -215,6 +219,7 @@ app.put("/drawings/:id", async (req, res) => {
|
||||
elementCount:
|
||||
elements && Array.isArray(elements) ? elements.length : undefined,
|
||||
hasAppState: appState !== undefined,
|
||||
hasFiles: files !== undefined,
|
||||
hasPreview: preview !== undefined,
|
||||
});
|
||||
|
||||
@@ -225,6 +230,7 @@ app.put("/drawings/:id", async (req, res) => {
|
||||
if (name !== undefined) data.name = name;
|
||||
if (elements !== undefined) data.elements = JSON.stringify(elements);
|
||||
if (appState !== undefined) data.appState = JSON.stringify(appState);
|
||||
if (files !== undefined) data.files = JSON.stringify(files);
|
||||
if (collectionId !== undefined) data.collectionId = collectionId;
|
||||
if (preview !== undefined) data.preview = preview;
|
||||
|
||||
@@ -249,6 +255,7 @@ app.put("/drawings/:id", async (req, res) => {
|
||||
...updatedDrawing,
|
||||
elements: JSON.parse(updatedDrawing.elements),
|
||||
appState: JSON.parse(updatedDrawing.appState),
|
||||
files: JSON.parse(updatedDrawing.files || "{}"),
|
||||
});
|
||||
} catch (error) {
|
||||
res.status(500).json({ error: "Failed to update drawing" });
|
||||
@@ -281,6 +288,7 @@ app.post("/drawings/:id/duplicate", async (req, res) => {
|
||||
name: `${original.name} (Copy)`,
|
||||
elements: original.elements,
|
||||
appState: original.appState,
|
||||
files: original.files,
|
||||
collectionId: original.collectionId,
|
||||
version: 1,
|
||||
},
|
||||
@@ -290,6 +298,7 @@ app.post("/drawings/:id/duplicate", async (req, res) => {
|
||||
...newDrawing,
|
||||
elements: JSON.parse(newDrawing.elements),
|
||||
appState: JSON.parse(newDrawing.appState),
|
||||
files: JSON.parse(newDrawing.files || "{}"),
|
||||
});
|
||||
} catch (error) {
|
||||
res.status(500).json({ error: "Failed to duplicate drawing" });
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import React, { useCallback, useEffect, useState, useRef } from 'react';
|
||||
import { useParams, useNavigate } from 'react-router-dom';
|
||||
import { ArrowLeft } from 'lucide-react';
|
||||
import { Excalidraw, convertToExcalidrawElements, exportToSvg } from '@excalidraw/excalidraw';
|
||||
import { Excalidraw, exportToSvg } from '@excalidraw/excalidraw';
|
||||
import '@excalidraw/excalidraw/index.css';
|
||||
import debounce from 'lodash/debounce';
|
||||
import throttle from 'lodash/throttle';
|
||||
@@ -235,6 +235,7 @@ export const Editor: React.FC = () => {
|
||||
gridSize: null,
|
||||
collaborators: new Map(),
|
||||
},
|
||||
files: {},
|
||||
scrollToContent: true,
|
||||
}), []);
|
||||
|
||||
@@ -269,6 +270,7 @@ export const Editor: React.FC = () => {
|
||||
await api.updateDrawing(id, {
|
||||
elements: persistableElements,
|
||||
appState: persistableAppState,
|
||||
files: latestFilesRef.current || {},
|
||||
});
|
||||
|
||||
console.log("[Editor] Save complete", { drawingId: id });
|
||||
@@ -362,7 +364,7 @@ export const Editor: React.FC = () => {
|
||||
hasHydratedInitialScene.current = false;
|
||||
elementVersionMap.current.clear();
|
||||
latestElementsRef.current = [];
|
||||
latestFilesRef.current = null;
|
||||
latestFilesRef.current = {};
|
||||
excalidrawAPI.current = null;
|
||||
setIsReady(false);
|
||||
setIsSceneLoading(true);
|
||||
@@ -378,9 +380,11 @@ export const Editor: React.FC = () => {
|
||||
const data = await api.getDrawing(id);
|
||||
setDrawingName(data.name);
|
||||
|
||||
const elements = convertToExcalidrawElements(data.elements || []);
|
||||
// Use elements directly without converting - they're already normalized during import
|
||||
const elements = data.elements || [];
|
||||
const files = data.files || {};
|
||||
latestElementsRef.current = elements;
|
||||
latestFilesRef.current = null;
|
||||
latestFilesRef.current = files;
|
||||
|
||||
elements.forEach((el: any) => {
|
||||
recordElementVersion(el);
|
||||
@@ -397,11 +401,14 @@ export const Editor: React.FC = () => {
|
||||
setInitialData({
|
||||
elements,
|
||||
appState: hydratedAppState,
|
||||
files,
|
||||
scrollToContent: true,
|
||||
});
|
||||
} catch (err) {
|
||||
console.error('Failed to load drawing', err);
|
||||
toast.error("Failed to load drawing");
|
||||
latestElementsRef.current = [];
|
||||
latestFilesRef.current = {};
|
||||
setInitialData(buildEmptyScene());
|
||||
} finally {
|
||||
setIsSceneLoading(false);
|
||||
@@ -422,7 +429,7 @@ export const Editor: React.FC = () => {
|
||||
if (excalidrawAPI.current && saveDataRef.current && savePreviewRef.current) {
|
||||
const elements = excalidrawAPI.current.getSceneElementsIncludingDeleted();
|
||||
const appState = excalidrawAPI.current.getAppState();
|
||||
const files = excalidrawAPI.current.getFiles() || null;
|
||||
const files = excalidrawAPI.current.getFiles() || {};
|
||||
latestElementsRef.current = elements;
|
||||
latestFilesRef.current = files;
|
||||
// Call save immediately, bypassing debounce
|
||||
@@ -494,11 +501,11 @@ export const Editor: React.FC = () => {
|
||||
debouncedSave(allElements, appState);
|
||||
|
||||
// Trigger Slow Preview Gen
|
||||
const files = excalidrawAPI.current?.getFiles() || null;
|
||||
const files = excalidrawAPI.current?.getFiles() || {};
|
||||
latestFilesRef.current = files;
|
||||
console.log("[Editor] Queueing preview save", {
|
||||
drawingId: id,
|
||||
fileCount: files ? Object.keys(files).length : 0,
|
||||
fileCount: Object.keys(files).length,
|
||||
});
|
||||
debouncedSavePreview(allElements, appState, files);
|
||||
}, [debouncedSave, debouncedSavePreview, broadcastChanges]);
|
||||
|
||||
@@ -3,6 +3,7 @@ export interface Drawing {
|
||||
name: string;
|
||||
elements: any[];
|
||||
appState: any;
|
||||
files: Record<string, any> | null;
|
||||
collectionId: string | null;
|
||||
updatedAt: number;
|
||||
createdAt: number;
|
||||
|
||||
@@ -29,7 +29,8 @@ export const importDrawings = async (
|
||||
throw new Error(`Invalid file structure: ${file.name}`);
|
||||
}
|
||||
|
||||
// Generate Preview
|
||||
// Use raw elements directly from the file - no normalization needed
|
||||
// Generate Preview with raw elements
|
||||
const svg = await exportToSvg({
|
||||
elements: data.elements,
|
||||
appState: {
|
||||
@@ -37,11 +38,11 @@ export const importDrawings = async (
|
||||
exportBackground: true,
|
||||
viewBackgroundColor: data.appState.viewBackgroundColor || "#ffffff",
|
||||
},
|
||||
files: data.files || null,
|
||||
files: data.files || {},
|
||||
exportPadding: 10,
|
||||
});
|
||||
|
||||
// Prepare payload
|
||||
// Prepare payload with raw elements
|
||||
const payload = {
|
||||
name: file.name.replace(/\.(json|excalidraw)$/, ""),
|
||||
elements: data.elements,
|
||||
|
||||
Reference in New Issue
Block a user