pacatui 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (51) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +153 -0
  3. package/generated/prisma/browser.ts +59 -0
  4. package/generated/prisma/client.ts +81 -0
  5. package/generated/prisma/commonInputTypes.ts +402 -0
  6. package/generated/prisma/enums.ts +15 -0
  7. package/generated/prisma/internal/class.ts +260 -0
  8. package/generated/prisma/internal/prismaNamespace.ts +1362 -0
  9. package/generated/prisma/internal/prismaNamespaceBrowser.ts +190 -0
  10. package/generated/prisma/models/Customer.ts +1489 -0
  11. package/generated/prisma/models/Invoice.ts +1837 -0
  12. package/generated/prisma/models/Project.ts +1981 -0
  13. package/generated/prisma/models/Setting.ts +1086 -0
  14. package/generated/prisma/models/Tag.ts +1288 -0
  15. package/generated/prisma/models/Task.ts +1669 -0
  16. package/generated/prisma/models/TaskTag.ts +1340 -0
  17. package/generated/prisma/models/TimeEntry.ts +1602 -0
  18. package/generated/prisma/models.ts +19 -0
  19. package/package.json +71 -0
  20. package/prisma/migrations/20260115051911_init/migration.sql +71 -0
  21. package/prisma/migrations/20260115062427_add_time_tracking/migration.sql +20 -0
  22. package/prisma/migrations/20260117233250_add_customers_invoices/migration.sql +81 -0
  23. package/prisma/migrations/migration_lock.toml +3 -0
  24. package/prisma/schema.prisma +162 -0
  25. package/src/App.tsx +1492 -0
  26. package/src/components/CreateInvoiceModal.tsx +222 -0
  27. package/src/components/CustomerModal.tsx +158 -0
  28. package/src/components/CustomerSelectModal.tsx +142 -0
  29. package/src/components/Dashboard.tsx +242 -0
  30. package/src/components/DateTimePicker.tsx +335 -0
  31. package/src/components/EditTimeEntryModal.tsx +293 -0
  32. package/src/components/Header.tsx +65 -0
  33. package/src/components/HelpView.tsx +109 -0
  34. package/src/components/InputModal.tsx +79 -0
  35. package/src/components/InvoicesView.tsx +297 -0
  36. package/src/components/Modal.tsx +38 -0
  37. package/src/components/ProjectList.tsx +114 -0
  38. package/src/components/ProjectModal.tsx +116 -0
  39. package/src/components/SettingsView.tsx +145 -0
  40. package/src/components/SplashScreen.tsx +25 -0
  41. package/src/components/StatusBar.tsx +93 -0
  42. package/src/components/TaskList.tsx +143 -0
  43. package/src/components/Timer.tsx +95 -0
  44. package/src/components/TimerModals.tsx +120 -0
  45. package/src/components/TimesheetView.tsx +218 -0
  46. package/src/components/index.ts +17 -0
  47. package/src/db.ts +629 -0
  48. package/src/hooks/usePaste.ts +69 -0
  49. package/src/index.tsx +75 -0
  50. package/src/stripe.ts +163 -0
  51. package/src/types.ts +361 -0
@@ -0,0 +1,260 @@
1
+
2
+ /* !!! This is code generated by Prisma. Do not edit directly. !!! */
3
+ /* eslint-disable */
4
+ // biome-ignore-all lint: generated file
5
+ // @ts-nocheck
6
+ /*
7
+ * WARNING: This is an internal file that is subject to change!
8
+ *
9
+ * 🛑 Under no circumstances should you import this file directly! 🛑
10
+ *
11
+ * Please import the `PrismaClient` class from the `client.ts` file instead.
12
+ */
13
+
14
+ import * as runtime from "@prisma/client/runtime/client"
15
+ import type * as Prisma from "./prismaNamespace.ts"
16
+
17
+
18
+ const config: runtime.GetPrismaClientConfig = {
19
+ "previewFeatures": [],
20
+ "clientVersion": "7.2.0",
21
+ "engineVersion": "0c8ef2ce45c83248ab3df073180d5eda9e8be7a3",
22
+ "activeProvider": "sqlite",
23
+ "inlineSchema": "// Paca - Task Manager Database Schema\n// Learn more: https://pris.ly/d/prisma-schema\n\ngenerator client {\n provider = \"prisma-client\"\n output = \"../generated/prisma\"\n}\n\ndatasource db {\n provider = \"sqlite\"\n}\n\n// Customers for invoicing\nmodel Customer {\n id String @id @default(uuid())\n name String\n email String @unique\n stripeCustomerId String? // Stripe customer ID once created\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n\n // Relations\n projects Project[]\n invoices Invoice[]\n\n @@index([email])\n}\n\n// Projects are the core organizational unit\nmodel Project {\n id String @id @default(uuid())\n name String\n description String?\n color String @default(\"#3b82f6\") // Default blue color\n hourlyRate Float? // Hourly rate for billing/tracking\n archived Boolean @default(false)\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n\n // Relations\n tasks Task[]\n timeEntries TimeEntry[]\n customerId String?\n customer Customer? @relation(fields: [customerId], references: [id], onDelete: SetNull)\n invoices Invoice[]\n\n // Future: GitHub integration fields\n // githubRepoId String?\n // githubProjectId String?\n // syncEnabled Boolean @default(false)\n\n @@index([archived])\n @@index([createdAt])\n @@index([customerId])\n}\n\n// Time tracking entries\nmodel TimeEntry {\n id String @id @default(uuid())\n startTime DateTime\n endTime DateTime?\n description String?\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n\n // Relations\n projectId String\n project Project @relation(fields: [projectId], references: [id], onDelete: Cascade)\n invoiceId String?\n invoice Invoice? @relation(fields: [invoiceId], references: [id], onDelete: SetNull)\n\n @@index([projectId])\n @@index([startTime])\n @@index([invoiceId])\n}\n\n// Invoices for time entries\nmodel Invoice {\n id String @id @default(uuid())\n stripeInvoiceId String? // Stripe invoice ID once created\n status String @default(\"draft\") // draft, sent, paid\n totalHours Float\n totalAmount Float\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n\n // Relations\n projectId String\n project Project @relation(fields: [projectId], references: [id])\n customerId String\n customer Customer @relation(fields: [customerId], references: [id])\n timeEntries TimeEntry[]\n\n @@index([projectId])\n @@index([customerId])\n @@index([status])\n}\n\n// Tasks belong to projects\nmodel Task {\n id String @id @default(uuid())\n title String\n description String?\n status String @default(\"todo\") // todo, in_progress, done\n priority String @default(\"medium\") // low, medium, high, urgent\n dueDate DateTime?\n completedAt DateTime?\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n\n // Relations\n projectId String\n project Project @relation(fields: [projectId], references: [id], onDelete: Cascade)\n tags TaskTag[]\n\n // Future: GitHub integration fields\n // githubIssueId String?\n // githubIssueNumber Int?\n // syncEnabled Boolean @default(false)\n\n @@index([projectId])\n @@index([status])\n @@index([priority])\n @@index([dueDate])\n}\n\n// Tags for categorizing tasks\nmodel Tag {\n id String @id @default(uuid())\n name String @unique\n color String @default(\"#6b7280\") // Default gray\n createdAt DateTime @default(now())\n\n // Relations\n tasks TaskTag[]\n}\n\n// Many-to-many relation between tasks and tags\nmodel TaskTag {\n taskId String\n tagId String\n task Task @relation(fields: [taskId], references: [id], onDelete: Cascade)\n tag Tag @relation(fields: [tagId], references: [id], onDelete: Cascade)\n\n @@id([taskId, tagId])\n}\n\n// App settings/preferences\nmodel Setting {\n key String @id\n value String\n updatedAt DateTime @updatedAt\n}\n\n// Future: User model for cloud sync\n// model User {\n// id String @id @default(uuid())\n// email String @unique\n// name String?\n// createdAt DateTime @default(now())\n// lastSyncAt DateTime?\n// }\n",
24
+ "runtimeDataModel": {
25
+ "models": {},
26
+ "enums": {},
27
+ "types": {}
28
+ }
29
+ }
30
+
31
+ config.runtimeDataModel = JSON.parse("{\"models\":{\"Customer\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"email\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"stripeCustomerId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"projects\",\"kind\":\"object\",\"type\":\"Project\",\"relationName\":\"CustomerToProject\"},{\"name\":\"invoices\",\"kind\":\"object\",\"type\":\"Invoice\",\"relationName\":\"CustomerToInvoice\"}],\"dbName\":null},\"Project\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"description\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"color\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"hourlyRate\",\"kind\":\"scalar\",\"type\":\"Float\"},{\"name\":\"archived\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"tasks\",\"kind\":\"object\",\"type\":\"Task\",\"relationName\":\"ProjectToTask\"},{\"name\":\"timeEntries\",\"kind\":\"object\",\"type\":\"TimeEntry\",\"relationName\":\"ProjectToTimeEntry\"},{\"name\":\"customerId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"customer\",\"kind\":\"object\",\"type\":\"Customer\",\"relationName\":\"CustomerToProject\"},{\"name\":\"invoices\",\"kind\":\"object\",\"type\":\"Invoice\",\"relationName\":\"InvoiceToProject\"}],\"dbName\":null},\"TimeEntry\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"startTime\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"endTime\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"description\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"projectId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"project\",\"kind\":\"object\",\"type\":\"Project\",\"relationName\":\"ProjectToTimeEntry\"},{\"name\":\"invoiceId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"invoice\",\"kind\":\"object\",\"type\":\"Invoice\",\"relationName\":\"InvoiceToTimeEntry\"}],\"dbName\":null},\"Invoice\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"stripeInvoiceId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"status\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"totalHours\",\"kind\":\"scalar\",\"type\":\"Float\"},{\"name\":\"totalAmount\",\"kind\":\"scalar\",\"type\":\"Float\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"projectId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"project\",\"kind\":\"object\",\"type\":\"Project\",\"relationName\":\"InvoiceToProject\"},{\"name\":\"customerId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"customer\",\"kind\":\"object\",\"type\":\"Customer\",\"relationName\":\"CustomerToInvoice\"},{\"name\":\"timeEntries\",\"kind\":\"object\",\"type\":\"TimeEntry\",\"relationName\":\"InvoiceToTimeEntry\"}],\"dbName\":null},\"Task\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"title\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"description\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"status\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"priority\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"dueDate\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"completedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"projectId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"project\",\"kind\":\"object\",\"type\":\"Project\",\"relationName\":\"ProjectToTask\"},{\"name\":\"tags\",\"kind\":\"object\",\"type\":\"TaskTag\",\"relationName\":\"TaskToTaskTag\"}],\"dbName\":null},\"Tag\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"color\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"tasks\",\"kind\":\"object\",\"type\":\"TaskTag\",\"relationName\":\"TagToTaskTag\"}],\"dbName\":null},\"TaskTag\":{\"fields\":[{\"name\":\"taskId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"tagId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"task\",\"kind\":\"object\",\"type\":\"Task\",\"relationName\":\"TaskToTaskTag\"},{\"name\":\"tag\",\"kind\":\"object\",\"type\":\"Tag\",\"relationName\":\"TagToTaskTag\"}],\"dbName\":null},\"Setting\":{\"fields\":[{\"name\":\"key\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"value\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"}],\"dbName\":null}},\"enums\":{},\"types\":{}}")
32
+
33
+ async function decodeBase64AsWasm(wasmBase64: string): Promise<WebAssembly.Module> {
34
+ const { Buffer } = await import('node:buffer')
35
+ const wasmArray = Buffer.from(wasmBase64, 'base64')
36
+ return new WebAssembly.Module(wasmArray)
37
+ }
38
+
39
+ config.compilerWasm = {
40
+ getRuntime: async () => await import("@prisma/client/runtime/query_compiler_bg.sqlite.mjs"),
41
+
42
+ getQueryCompilerWasmModule: async () => {
43
+ const { wasm } = await import("@prisma/client/runtime/query_compiler_bg.sqlite.wasm-base64.mjs")
44
+ return await decodeBase64AsWasm(wasm)
45
+ }
46
+ }
47
+
48
+
49
+
50
+ export type LogOptions<ClientOptions extends Prisma.PrismaClientOptions> =
51
+ 'log' extends keyof ClientOptions ? ClientOptions['log'] extends Array<Prisma.LogLevel | Prisma.LogDefinition> ? Prisma.GetEvents<ClientOptions['log']> : never : never
52
+
53
+ export interface PrismaClientConstructor {
54
+ /**
55
+ * ## Prisma Client
56
+ *
57
+ * Type-safe database client for TypeScript
58
+ * @example
59
+ * ```
60
+ * const prisma = new PrismaClient()
61
+ * // Fetch zero or more Customers
62
+ * const customers = await prisma.customer.findMany()
63
+ * ```
64
+ *
65
+ * Read more in our [docs](https://pris.ly/d/client).
66
+ */
67
+
68
+ new <
69
+ Options extends Prisma.PrismaClientOptions = Prisma.PrismaClientOptions,
70
+ LogOpts extends LogOptions<Options> = LogOptions<Options>,
71
+ OmitOpts extends Prisma.PrismaClientOptions['omit'] = Options extends { omit: infer U } ? U : Prisma.PrismaClientOptions['omit'],
72
+ ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs
73
+ >(options: Prisma.Subset<Options, Prisma.PrismaClientOptions> ): PrismaClient<LogOpts, OmitOpts, ExtArgs>
74
+ }
75
+
76
+ /**
77
+ * ## Prisma Client
78
+ *
79
+ * Type-safe database client for TypeScript
80
+ * @example
81
+ * ```
82
+ * const prisma = new PrismaClient()
83
+ * // Fetch zero or more Customers
84
+ * const customers = await prisma.customer.findMany()
85
+ * ```
86
+ *
87
+ * Read more in our [docs](https://pris.ly/d/client).
88
+ */
89
+
90
+ export interface PrismaClient<
91
+ in LogOpts extends Prisma.LogLevel = never,
92
+ in out OmitOpts extends Prisma.PrismaClientOptions['omit'] = undefined,
93
+ in out ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs
94
+ > {
95
+ [K: symbol]: { types: Prisma.TypeMap<ExtArgs>['other'] }
96
+
97
+ $on<V extends LogOpts>(eventType: V, callback: (event: V extends 'query' ? Prisma.QueryEvent : Prisma.LogEvent) => void): PrismaClient;
98
+
99
+ /**
100
+ * Connect with the database
101
+ */
102
+ $connect(): runtime.Types.Utils.JsPromise<void>;
103
+
104
+ /**
105
+ * Disconnect from the database
106
+ */
107
+ $disconnect(): runtime.Types.Utils.JsPromise<void>;
108
+
109
+ /**
110
+ * Executes a prepared raw query and returns the number of affected rows.
111
+ * @example
112
+ * ```
113
+ * const result = await prisma.$executeRaw`UPDATE User SET cool = ${true} WHERE email = ${'user@email.com'};`
114
+ * ```
115
+ *
116
+ * Read more in our [docs](https://pris.ly/d/raw-queries).
117
+ */
118
+ $executeRaw<T = unknown>(query: TemplateStringsArray | Prisma.Sql, ...values: any[]): Prisma.PrismaPromise<number>;
119
+
120
+ /**
121
+ * Executes a raw query and returns the number of affected rows.
122
+ * Susceptible to SQL injections, see documentation.
123
+ * @example
124
+ * ```
125
+ * const result = await prisma.$executeRawUnsafe('UPDATE User SET cool = $1 WHERE email = $2 ;', true, 'user@email.com')
126
+ * ```
127
+ *
128
+ * Read more in our [docs](https://pris.ly/d/raw-queries).
129
+ */
130
+ $executeRawUnsafe<T = unknown>(query: string, ...values: any[]): Prisma.PrismaPromise<number>;
131
+
132
+ /**
133
+ * Performs a prepared raw query and returns the `SELECT` data.
134
+ * @example
135
+ * ```
136
+ * const result = await prisma.$queryRaw`SELECT * FROM User WHERE id = ${1} OR email = ${'user@email.com'};`
137
+ * ```
138
+ *
139
+ * Read more in our [docs](https://pris.ly/d/raw-queries).
140
+ */
141
+ $queryRaw<T = unknown>(query: TemplateStringsArray | Prisma.Sql, ...values: any[]): Prisma.PrismaPromise<T>;
142
+
143
+ /**
144
+ * Performs a raw query and returns the `SELECT` data.
145
+ * Susceptible to SQL injections, see documentation.
146
+ * @example
147
+ * ```
148
+ * const result = await prisma.$queryRawUnsafe('SELECT * FROM User WHERE id = $1 OR email = $2;', 1, 'user@email.com')
149
+ * ```
150
+ *
151
+ * Read more in our [docs](https://pris.ly/d/raw-queries).
152
+ */
153
+ $queryRawUnsafe<T = unknown>(query: string, ...values: any[]): Prisma.PrismaPromise<T>;
154
+
155
+
156
+ /**
157
+ * Allows the running of a sequence of read/write operations that are guaranteed to either succeed or fail as a whole.
158
+ * @example
159
+ * ```
160
+ * const [george, bob, alice] = await prisma.$transaction([
161
+ * prisma.user.create({ data: { name: 'George' } }),
162
+ * prisma.user.create({ data: { name: 'Bob' } }),
163
+ * prisma.user.create({ data: { name: 'Alice' } }),
164
+ * ])
165
+ * ```
166
+ *
167
+ * Read more in our [docs](https://www.prisma.io/docs/concepts/components/prisma-client/transactions).
168
+ */
169
+ $transaction<P extends Prisma.PrismaPromise<any>[]>(arg: [...P], options?: { isolationLevel?: Prisma.TransactionIsolationLevel }): runtime.Types.Utils.JsPromise<runtime.Types.Utils.UnwrapTuple<P>>
170
+
171
+ $transaction<R>(fn: (prisma: Omit<PrismaClient, runtime.ITXClientDenyList>) => runtime.Types.Utils.JsPromise<R>, options?: { maxWait?: number, timeout?: number, isolationLevel?: Prisma.TransactionIsolationLevel }): runtime.Types.Utils.JsPromise<R>
172
+
173
+ $extends: runtime.Types.Extensions.ExtendsHook<"extends", Prisma.TypeMapCb<OmitOpts>, ExtArgs, runtime.Types.Utils.Call<Prisma.TypeMapCb<OmitOpts>, {
174
+ extArgs: ExtArgs
175
+ }>>
176
+
177
+ /**
178
+ * `prisma.customer`: Exposes CRUD operations for the **Customer** model.
179
+ * Example usage:
180
+ * ```ts
181
+ * // Fetch zero or more Customers
182
+ * const customers = await prisma.customer.findMany()
183
+ * ```
184
+ */
185
+ get customer(): Prisma.CustomerDelegate<ExtArgs, { omit: OmitOpts }>;
186
+
187
+ /**
188
+ * `prisma.project`: Exposes CRUD operations for the **Project** model.
189
+ * Example usage:
190
+ * ```ts
191
+ * // Fetch zero or more Projects
192
+ * const projects = await prisma.project.findMany()
193
+ * ```
194
+ */
195
+ get project(): Prisma.ProjectDelegate<ExtArgs, { omit: OmitOpts }>;
196
+
197
+ /**
198
+ * `prisma.timeEntry`: Exposes CRUD operations for the **TimeEntry** model.
199
+ * Example usage:
200
+ * ```ts
201
+ * // Fetch zero or more TimeEntries
202
+ * const timeEntries = await prisma.timeEntry.findMany()
203
+ * ```
204
+ */
205
+ get timeEntry(): Prisma.TimeEntryDelegate<ExtArgs, { omit: OmitOpts }>;
206
+
207
+ /**
208
+ * `prisma.invoice`: Exposes CRUD operations for the **Invoice** model.
209
+ * Example usage:
210
+ * ```ts
211
+ * // Fetch zero or more Invoices
212
+ * const invoices = await prisma.invoice.findMany()
213
+ * ```
214
+ */
215
+ get invoice(): Prisma.InvoiceDelegate<ExtArgs, { omit: OmitOpts }>;
216
+
217
+ /**
218
+ * `prisma.task`: Exposes CRUD operations for the **Task** model.
219
+ * Example usage:
220
+ * ```ts
221
+ * // Fetch zero or more Tasks
222
+ * const tasks = await prisma.task.findMany()
223
+ * ```
224
+ */
225
+ get task(): Prisma.TaskDelegate<ExtArgs, { omit: OmitOpts }>;
226
+
227
+ /**
228
+ * `prisma.tag`: Exposes CRUD operations for the **Tag** model.
229
+ * Example usage:
230
+ * ```ts
231
+ * // Fetch zero or more Tags
232
+ * const tags = await prisma.tag.findMany()
233
+ * ```
234
+ */
235
+ get tag(): Prisma.TagDelegate<ExtArgs, { omit: OmitOpts }>;
236
+
237
+ /**
238
+ * `prisma.taskTag`: Exposes CRUD operations for the **TaskTag** model.
239
+ * Example usage:
240
+ * ```ts
241
+ * // Fetch zero or more TaskTags
242
+ * const taskTags = await prisma.taskTag.findMany()
243
+ * ```
244
+ */
245
+ get taskTag(): Prisma.TaskTagDelegate<ExtArgs, { omit: OmitOpts }>;
246
+
247
+ /**
248
+ * `prisma.setting`: Exposes CRUD operations for the **Setting** model.
249
+ * Example usage:
250
+ * ```ts
251
+ * // Fetch zero or more Settings
252
+ * const settings = await prisma.setting.findMany()
253
+ * ```
254
+ */
255
+ get setting(): Prisma.SettingDelegate<ExtArgs, { omit: OmitOpts }>;
256
+ }
257
+
258
+ export function getPrismaClientClass(): PrismaClientConstructor {
259
+ return runtime.getPrismaClient(config) as unknown as PrismaClientConstructor
260
+ }