Trash ID Update Collections

This commit is contained in:
Zimeng Xiong
2025-11-21 19:31:59 -08:00
parent 4e8beae0ee
commit 0878b5e87f
16 changed files with 169 additions and 101 deletions
+5 -5
View File
@@ -99,6 +99,7 @@ exports.Prisma.DrawingScalarFieldEnum = {
name: 'name',
elements: 'elements',
appState: 'appState',
preview: 'preview',
version: 'version',
collectionId: 'collectionId',
createdAt: 'createdAt',
@@ -149,7 +150,7 @@ const config = {
"isCustomOutput": true
},
"relativeEnvPaths": {
"rootEnvPath": "../../../.env",
"rootEnvPath": null,
"schemaEnvPath": "../../../.env"
},
"relativePath": "../../../prisma",
@@ -159,7 +160,6 @@ const config = {
"db"
],
"activeProvider": "sqlite",
"postinstall": false,
"inlineDatasources": {
"db": {
"url": {
@@ -168,13 +168,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 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": "481a5f143c00eb5cbae4281008c7bf10c3e13066bfd88f97f47bd22f56672c24",
"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",
"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\":\"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\":\"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',
preview: 'preview',
version: 'version',
collectionId: 'collectionId',
createdAt: 'createdAt',
+93 -58
View File
@@ -1918,6 +1918,7 @@ export namespace Prisma {
name: string | null
elements: string | null
appState: string | null
preview: string | null
version: number | null
collectionId: string | null
createdAt: Date | null
@@ -1929,6 +1930,7 @@ export namespace Prisma {
name: string | null
elements: string | null
appState: string | null
preview: string | null
version: number | null
collectionId: string | null
createdAt: Date | null
@@ -1940,6 +1942,7 @@ export namespace Prisma {
name: number
elements: number
appState: number
preview: number
version: number
collectionId: number
createdAt: number
@@ -1961,6 +1964,7 @@ export namespace Prisma {
name?: true
elements?: true
appState?: true
preview?: true
version?: true
collectionId?: true
createdAt?: true
@@ -1972,6 +1976,7 @@ export namespace Prisma {
name?: true
elements?: true
appState?: true
preview?: true
version?: true
collectionId?: true
createdAt?: true
@@ -1983,6 +1988,7 @@ export namespace Prisma {
name?: true
elements?: true
appState?: true
preview?: true
version?: true
collectionId?: true
createdAt?: true
@@ -2081,6 +2087,7 @@ export namespace Prisma {
name: string
elements: string
appState: string
preview: string | null
version: number
collectionId: string | null
createdAt: Date
@@ -2111,6 +2118,7 @@ export namespace Prisma {
name?: boolean
elements?: boolean
appState?: boolean
preview?: boolean
version?: boolean
collectionId?: boolean
createdAt?: boolean
@@ -2123,6 +2131,7 @@ export namespace Prisma {
name?: boolean
elements?: boolean
appState?: boolean
preview?: boolean
version?: boolean
collectionId?: boolean
createdAt?: boolean
@@ -2135,6 +2144,7 @@ export namespace Prisma {
name?: boolean
elements?: boolean
appState?: boolean
preview?: boolean
version?: boolean
collectionId?: boolean
createdAt?: boolean
@@ -2158,6 +2168,7 @@ export namespace Prisma {
name: string
elements: string
appState: string
preview: string | null
version: number
collectionId: string | null
createdAt: Date
@@ -2560,6 +2571,7 @@ export namespace Prisma {
readonly name: FieldRef<"Drawing", 'String'>
readonly elements: FieldRef<"Drawing", 'String'>
readonly appState: FieldRef<"Drawing", 'String'>
readonly preview: FieldRef<"Drawing", 'String'>
readonly version: FieldRef<"Drawing", 'Int'>
readonly collectionId: FieldRef<"Drawing", 'String'>
readonly createdAt: FieldRef<"Drawing", 'DateTime'>
@@ -2935,6 +2947,7 @@ export namespace Prisma {
name: 'name',
elements: 'elements',
appState: 'appState',
preview: 'preview',
version: 'version',
collectionId: 'collectionId',
createdAt: 'createdAt',
@@ -3054,6 +3067,7 @@ export namespace Prisma {
name?: StringFilter<"Drawing"> | string
elements?: StringFilter<"Drawing"> | string
appState?: StringFilter<"Drawing"> | string
preview?: StringNullableFilter<"Drawing"> | string | null
version?: IntFilter<"Drawing"> | number
collectionId?: StringNullableFilter<"Drawing"> | string | null
createdAt?: DateTimeFilter<"Drawing"> | Date | string
@@ -3066,6 +3080,7 @@ export namespace Prisma {
name?: SortOrder
elements?: SortOrder
appState?: SortOrder
preview?: SortOrderInput | SortOrder
version?: SortOrder
collectionId?: SortOrderInput | SortOrder
createdAt?: SortOrder
@@ -3081,6 +3096,7 @@ export namespace Prisma {
name?: StringFilter<"Drawing"> | string
elements?: StringFilter<"Drawing"> | string
appState?: StringFilter<"Drawing"> | string
preview?: StringNullableFilter<"Drawing"> | string | null
version?: IntFilter<"Drawing"> | number
collectionId?: StringNullableFilter<"Drawing"> | string | null
createdAt?: DateTimeFilter<"Drawing"> | Date | string
@@ -3093,6 +3109,7 @@ export namespace Prisma {
name?: SortOrder
elements?: SortOrder
appState?: SortOrder
preview?: SortOrderInput | SortOrder
version?: SortOrder
collectionId?: SortOrderInput | SortOrder
createdAt?: SortOrder
@@ -3112,6 +3129,7 @@ export namespace Prisma {
name?: StringWithAggregatesFilter<"Drawing"> | string
elements?: StringWithAggregatesFilter<"Drawing"> | string
appState?: StringWithAggregatesFilter<"Drawing"> | string
preview?: StringNullableWithAggregatesFilter<"Drawing"> | string | null
version?: IntWithAggregatesFilter<"Drawing"> | number
collectionId?: StringNullableWithAggregatesFilter<"Drawing"> | string | null
createdAt?: DateTimeWithAggregatesFilter<"Drawing"> | Date | string
@@ -3176,6 +3194,7 @@ export namespace Prisma {
name: string
elements: string
appState: string
preview?: string | null
version?: number
createdAt?: Date | string
updatedAt?: Date | string
@@ -3187,6 +3206,7 @@ export namespace Prisma {
name: string
elements: string
appState: string
preview?: string | null
version?: number
collectionId?: string | null
createdAt?: Date | string
@@ -3198,6 +3218,7 @@ export namespace Prisma {
name?: StringFieldUpdateOperationsInput | string
elements?: StringFieldUpdateOperationsInput | string
appState?: StringFieldUpdateOperationsInput | string
preview?: NullableStringFieldUpdateOperationsInput | string | null
version?: IntFieldUpdateOperationsInput | number
createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string
@@ -3209,6 +3230,7 @@ export namespace Prisma {
name?: StringFieldUpdateOperationsInput | string
elements?: StringFieldUpdateOperationsInput | string
appState?: StringFieldUpdateOperationsInput | string
preview?: NullableStringFieldUpdateOperationsInput | string | null
version?: IntFieldUpdateOperationsInput | number
collectionId?: NullableStringFieldUpdateOperationsInput | string | null
createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
@@ -3220,6 +3242,7 @@ export namespace Prisma {
name: string
elements: string
appState: string
preview?: string | null
version?: number
collectionId?: string | null
createdAt?: Date | string
@@ -3231,6 +3254,7 @@ export namespace Prisma {
name?: StringFieldUpdateOperationsInput | string
elements?: StringFieldUpdateOperationsInput | string
appState?: StringFieldUpdateOperationsInput | string
preview?: NullableStringFieldUpdateOperationsInput | string | null
version?: IntFieldUpdateOperationsInput | number
createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string
@@ -3241,6 +3265,7 @@ export namespace Prisma {
name?: StringFieldUpdateOperationsInput | string
elements?: StringFieldUpdateOperationsInput | string
appState?: StringFieldUpdateOperationsInput | string
preview?: NullableStringFieldUpdateOperationsInput | string | null
version?: IntFieldUpdateOperationsInput | number
collectionId?: NullableStringFieldUpdateOperationsInput | string | null
createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
@@ -3334,17 +3359,6 @@ export namespace Prisma {
_max?: NestedDateTimeFilter<$PrismaModel>
}
export type IntFilter<$PrismaModel = never> = {
equals?: number | IntFieldRefInput<$PrismaModel>
in?: number[]
notIn?: number[]
lt?: number | IntFieldRefInput<$PrismaModel>
lte?: number | IntFieldRefInput<$PrismaModel>
gt?: number | IntFieldRefInput<$PrismaModel>
gte?: number | IntFieldRefInput<$PrismaModel>
not?: NestedIntFilter<$PrismaModel> | number
}
export type StringNullableFilter<$PrismaModel = never> = {
equals?: string | StringFieldRefInput<$PrismaModel> | null
in?: string[] | null
@@ -3359,6 +3373,17 @@ export namespace Prisma {
not?: NestedStringNullableFilter<$PrismaModel> | string | null
}
export type IntFilter<$PrismaModel = never> = {
equals?: number | IntFieldRefInput<$PrismaModel>
in?: number[]
notIn?: number[]
lt?: number | IntFieldRefInput<$PrismaModel>
lte?: number | IntFieldRefInput<$PrismaModel>
gt?: number | IntFieldRefInput<$PrismaModel>
gte?: number | IntFieldRefInput<$PrismaModel>
not?: NestedIntFilter<$PrismaModel> | number
}
export type CollectionNullableRelationFilter = {
is?: CollectionWhereInput | null
isNot?: CollectionWhereInput | null
@@ -3374,6 +3399,7 @@ export namespace Prisma {
name?: SortOrder
elements?: SortOrder
appState?: SortOrder
preview?: SortOrder
version?: SortOrder
collectionId?: SortOrder
createdAt?: SortOrder
@@ -3389,6 +3415,7 @@ export namespace Prisma {
name?: SortOrder
elements?: SortOrder
appState?: SortOrder
preview?: SortOrder
version?: SortOrder
collectionId?: SortOrder
createdAt?: SortOrder
@@ -3400,6 +3427,7 @@ export namespace Prisma {
name?: SortOrder
elements?: SortOrder
appState?: SortOrder
preview?: SortOrder
version?: SortOrder
collectionId?: SortOrder
createdAt?: SortOrder
@@ -3410,22 +3438,6 @@ export namespace Prisma {
version?: SortOrder
}
export type IntWithAggregatesFilter<$PrismaModel = never> = {
equals?: number | IntFieldRefInput<$PrismaModel>
in?: number[]
notIn?: number[]
lt?: number | IntFieldRefInput<$PrismaModel>
lte?: number | IntFieldRefInput<$PrismaModel>
gt?: number | IntFieldRefInput<$PrismaModel>
gte?: number | IntFieldRefInput<$PrismaModel>
not?: NestedIntWithAggregatesFilter<$PrismaModel> | number
_count?: NestedIntFilter<$PrismaModel>
_avg?: NestedFloatFilter<$PrismaModel>
_sum?: NestedIntFilter<$PrismaModel>
_min?: NestedIntFilter<$PrismaModel>
_max?: NestedIntFilter<$PrismaModel>
}
export type StringNullableWithAggregatesFilter<$PrismaModel = never> = {
equals?: string | StringFieldRefInput<$PrismaModel> | null
in?: string[] | null
@@ -3443,6 +3455,22 @@ export namespace Prisma {
_max?: NestedStringNullableFilter<$PrismaModel>
}
export type IntWithAggregatesFilter<$PrismaModel = never> = {
equals?: number | IntFieldRefInput<$PrismaModel>
in?: number[]
notIn?: number[]
lt?: number | IntFieldRefInput<$PrismaModel>
lte?: number | IntFieldRefInput<$PrismaModel>
gt?: number | IntFieldRefInput<$PrismaModel>
gte?: number | IntFieldRefInput<$PrismaModel>
not?: NestedIntWithAggregatesFilter<$PrismaModel> | number
_count?: NestedIntFilter<$PrismaModel>
_avg?: NestedFloatFilter<$PrismaModel>
_sum?: NestedIntFilter<$PrismaModel>
_min?: NestedIntFilter<$PrismaModel>
_max?: NestedIntFilter<$PrismaModel>
}
export type DrawingCreateNestedManyWithoutCollectionInput = {
create?: XOR<DrawingCreateWithoutCollectionInput, DrawingUncheckedCreateWithoutCollectionInput> | DrawingCreateWithoutCollectionInput[] | DrawingUncheckedCreateWithoutCollectionInput[]
connectOrCreate?: DrawingCreateOrConnectWithoutCollectionInput | DrawingCreateOrConnectWithoutCollectionInput[]
@@ -3499,6 +3527,10 @@ export namespace Prisma {
connect?: CollectionWhereUniqueInput
}
export type NullableStringFieldUpdateOperationsInput = {
set?: string | null
}
export type IntFieldUpdateOperationsInput = {
set?: number
increment?: number
@@ -3517,10 +3549,6 @@ export namespace Prisma {
update?: XOR<XOR<CollectionUpdateToOneWithWhereWithoutDrawingsInput, CollectionUpdateWithoutDrawingsInput>, CollectionUncheckedUpdateWithoutDrawingsInput>
}
export type NullableStringFieldUpdateOperationsInput = {
set?: string | null
}
export type NestedStringFilter<$PrismaModel = never> = {
equals?: string | StringFieldRefInput<$PrismaModel>
in?: string[]
@@ -3602,33 +3630,6 @@ export namespace Prisma {
not?: NestedStringNullableFilter<$PrismaModel> | string | null
}
export type NestedIntWithAggregatesFilter<$PrismaModel = never> = {
equals?: number | IntFieldRefInput<$PrismaModel>
in?: number[]
notIn?: number[]
lt?: number | IntFieldRefInput<$PrismaModel>
lte?: number | IntFieldRefInput<$PrismaModel>
gt?: number | IntFieldRefInput<$PrismaModel>
gte?: number | IntFieldRefInput<$PrismaModel>
not?: NestedIntWithAggregatesFilter<$PrismaModel> | number
_count?: NestedIntFilter<$PrismaModel>
_avg?: NestedFloatFilter<$PrismaModel>
_sum?: NestedIntFilter<$PrismaModel>
_min?: NestedIntFilter<$PrismaModel>
_max?: NestedIntFilter<$PrismaModel>
}
export type NestedFloatFilter<$PrismaModel = never> = {
equals?: number | FloatFieldRefInput<$PrismaModel>
in?: number[]
notIn?: number[]
lt?: number | FloatFieldRefInput<$PrismaModel>
lte?: number | FloatFieldRefInput<$PrismaModel>
gt?: number | FloatFieldRefInput<$PrismaModel>
gte?: number | FloatFieldRefInput<$PrismaModel>
not?: NestedFloatFilter<$PrismaModel> | number
}
export type NestedStringNullableWithAggregatesFilter<$PrismaModel = never> = {
equals?: string | StringFieldRefInput<$PrismaModel> | null
in?: string[] | null
@@ -3657,11 +3658,39 @@ export namespace Prisma {
not?: NestedIntNullableFilter<$PrismaModel> | number | null
}
export type NestedIntWithAggregatesFilter<$PrismaModel = never> = {
equals?: number | IntFieldRefInput<$PrismaModel>
in?: number[]
notIn?: number[]
lt?: number | IntFieldRefInput<$PrismaModel>
lte?: number | IntFieldRefInput<$PrismaModel>
gt?: number | IntFieldRefInput<$PrismaModel>
gte?: number | IntFieldRefInput<$PrismaModel>
not?: NestedIntWithAggregatesFilter<$PrismaModel> | number
_count?: NestedIntFilter<$PrismaModel>
_avg?: NestedFloatFilter<$PrismaModel>
_sum?: NestedIntFilter<$PrismaModel>
_min?: NestedIntFilter<$PrismaModel>
_max?: NestedIntFilter<$PrismaModel>
}
export type NestedFloatFilter<$PrismaModel = never> = {
equals?: number | FloatFieldRefInput<$PrismaModel>
in?: number[]
notIn?: number[]
lt?: number | FloatFieldRefInput<$PrismaModel>
lte?: number | FloatFieldRefInput<$PrismaModel>
gt?: number | FloatFieldRefInput<$PrismaModel>
gte?: number | FloatFieldRefInput<$PrismaModel>
not?: NestedFloatFilter<$PrismaModel> | number
}
export type DrawingCreateWithoutCollectionInput = {
id?: string
name: string
elements: string
appState: string
preview?: string | null
version?: number
createdAt?: Date | string
updatedAt?: Date | string
@@ -3672,6 +3701,7 @@ export namespace Prisma {
name: string
elements: string
appState: string
preview?: string | null
version?: number
createdAt?: Date | string
updatedAt?: Date | string
@@ -3710,6 +3740,7 @@ export namespace Prisma {
name?: StringFilter<"Drawing"> | string
elements?: StringFilter<"Drawing"> | string
appState?: StringFilter<"Drawing"> | string
preview?: StringNullableFilter<"Drawing"> | string | null
version?: IntFilter<"Drawing"> | number
collectionId?: StringNullableFilter<"Drawing"> | string | null
createdAt?: DateTimeFilter<"Drawing"> | Date | string
@@ -3765,6 +3796,7 @@ export namespace Prisma {
name: string
elements: string
appState: string
preview?: string | null
version?: number
createdAt?: Date | string
updatedAt?: Date | string
@@ -3775,6 +3807,7 @@ export namespace Prisma {
name?: StringFieldUpdateOperationsInput | string
elements?: StringFieldUpdateOperationsInput | string
appState?: StringFieldUpdateOperationsInput | string
preview?: NullableStringFieldUpdateOperationsInput | string | null
version?: IntFieldUpdateOperationsInput | number
createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string
@@ -3785,6 +3818,7 @@ export namespace Prisma {
name?: StringFieldUpdateOperationsInput | string
elements?: StringFieldUpdateOperationsInput | string
appState?: StringFieldUpdateOperationsInput | string
preview?: NullableStringFieldUpdateOperationsInput | string | null
version?: IntFieldUpdateOperationsInput | number
createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string
@@ -3795,6 +3829,7 @@ export namespace Prisma {
name?: StringFieldUpdateOperationsInput | string
elements?: StringFieldUpdateOperationsInput | string
appState?: StringFieldUpdateOperationsInput | string
preview?: NullableStringFieldUpdateOperationsInput | string | null
version?: IntFieldUpdateOperationsInput | number
createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string
+5 -5
View File
@@ -100,6 +100,7 @@ exports.Prisma.DrawingScalarFieldEnum = {
name: 'name',
elements: 'elements',
appState: 'appState',
preview: 'preview',
version: 'version',
collectionId: 'collectionId',
createdAt: 'createdAt',
@@ -150,7 +151,7 @@ const config = {
"isCustomOutput": true
},
"relativeEnvPaths": {
"rootEnvPath": "../../../.env",
"rootEnvPath": null,
"schemaEnvPath": "../../../.env"
},
"relativePath": "../../../prisma",
@@ -160,7 +161,6 @@ const config = {
"db"
],
"activeProvider": "sqlite",
"postinstall": false,
"inlineDatasources": {
"db": {
"url": {
@@ -169,8 +169,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 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": "481a5f143c00eb5cbae4281008c7bf10c3e13066bfd88f97f47bd22f56672c24",
"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",
"copyEngine": true
}
@@ -191,7 +191,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\":\"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\":\"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 -1
View File
@@ -1,5 +1,5 @@
{
"name": "prisma-client-83e2d97f7605e3fc4b9dd655248fc3537e09c5d5de3bea41e3f804da1ddcbc6e",
"name": "prisma-client-3ebeea41bd8603a2c294a840f7d22c864ae7fc82298676ca177ef806525c6187",
"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
preview String? // SVG string for thumbnail
version Int @default(1)
collectionId String?
collection Collection? @relation(fields: [collectionId], references: [id])
+1
View File
@@ -131,6 +131,7 @@ exports.Prisma.DrawingScalarFieldEnum = {
name: 'name',
elements: 'elements',
appState: 'appState',
preview: 'preview',
version: 'version',
collectionId: 'collectionId',
createdAt: 'createdAt',
+31 -4
View File
@@ -8,7 +8,8 @@ import { PrismaClient } from "./generated/client";
dotenv.config();
// Ensure DATABASE_URL is absolute to avoid relative path issues with generated client
const dbPath = path.resolve(__dirname, "../dev.db");
// Point to the same DB file as Prisma CLI (relative to schema.prisma, usually in prisma/ folder)
const dbPath = path.resolve(__dirname, "../prisma/dev.db");
process.env.DATABASE_URL = `file:${dbPath}`;
console.log("Resolved DATABASE_URL:", process.env.DATABASE_URL);
@@ -35,6 +36,12 @@ app.get("/drawings", async (req, res) => {
where.collectionId = null;
} else if (collectionId) {
where.collectionId = String(collectionId);
} else {
// Default: Exclude trash, but include unorganized (null)
where.OR = [
{ collectionId: { not: "trash" } },
{ collectionId: null },
];
}
const drawings = await prisma.drawing.findMany({
@@ -79,7 +86,7 @@ app.get("/drawings/:id", async (req, res) => {
// POST /drawings
app.post("/drawings", async (req, res) => {
try {
const { name, elements, appState, collectionId } = req.body;
const { name, elements, appState, collectionId, preview } = req.body;
const newDrawing = await prisma.drawing.create({
data: {
@@ -87,6 +94,7 @@ app.post("/drawings", async (req, res) => {
elements: JSON.stringify(elements || []),
appState: JSON.stringify(appState || {}),
collectionId: collectionId || null,
preview: preview || null,
},
});
@@ -104,7 +112,7 @@ app.post("/drawings", async (req, res) => {
app.put("/drawings/:id", async (req, res) => {
try {
const { id } = req.params;
const { name, elements, appState, collectionId } = req.body;
const { name, elements, appState, collectionId, preview } = req.body;
const data: any = {
version: { increment: 1 },
@@ -114,6 +122,7 @@ app.put("/drawings/:id", async (req, res) => {
if (elements !== undefined) data.elements = JSON.stringify(elements);
if (appState !== undefined) data.appState = JSON.stringify(appState);
if (collectionId !== undefined) data.collectionId = collectionId;
if (preview !== undefined) data.preview = preview;
const updatedDrawing = await prisma.drawing.update({
where: { id },
@@ -236,6 +245,24 @@ app.delete("/collections/:id", async (req, res) => {
}
});
app.listen(PORT, () => {
// Ensure Trash collection exists
const ensureTrashCollection = async () => {
try {
const trash = await prisma.collection.findUnique({
where: { id: "trash" },
});
if (!trash) {
await prisma.collection.create({
data: { id: "trash", name: "Trash" },
});
console.log("Created Trash collection");
}
} catch (error) {
console.error("Failed to ensure Trash collection:", error);
}
};
app.listen(PORT, async () => {
await ensureTrashCollection();
console.log(`Server running on port ${PORT}`);
});