summaryrefslogtreecommitdiff
path: root/db/seeds_2/taskSeed.ts
diff options
context:
space:
mode:
Diffstat (limited to 'db/seeds_2/taskSeed.ts')
-rw-r--r--db/seeds_2/taskSeed.ts46
1 files changed, 46 insertions, 0 deletions
diff --git a/db/seeds_2/taskSeed.ts b/db/seeds_2/taskSeed.ts
new file mode 100644
index 00000000..24fcc0e8
--- /dev/null
+++ b/db/seeds_2/taskSeed.ts
@@ -0,0 +1,46 @@
+import db from "@/db/db"
+import { tasks } from "@/db/schema/tasks"
+import { generateId } from "@/lib/id"
+import { faker } from "@faker-js/faker"
+export type NewTask = typeof tasks.$inferInsert
+
+
+function generateRandomTask(): NewTask {
+ return {
+ id: generateId("task"),
+ code: undefined,
+ title: faker.hacker
+ .phrase()
+ .replace(/^./, (letter) => letter.toUpperCase()),
+ status: faker.helpers.shuffle(tasks.status.enumValues)[0] ?? "todo",
+ label: faker.helpers.shuffle(tasks.label.enumValues)[0] ?? "bug",
+ priority: faker.helpers.shuffle(tasks.priority.enumValues)[0] ?? "low",
+ archived: faker.datatype.boolean({ probability: 0.2 }),
+ createdAt: new Date(),
+ updatedAt: new Date(),
+ }
+ }
+
+
+export async function seedTasks(input: { count: number }) {
+ try {
+ const allTasks: NewTask[] = []
+
+ for (let i = 0; i < input.count; i++) {
+ allTasks.push(generateRandomTask())
+ }
+
+ console.log("📝 Inserting tasks", allTasks.length)
+
+ const result = await db.insert(tasks)
+ .values(allTasks)
+ .onConflictDoNothing()
+ .returning()
+
+ console.log(`✅ Successfully added ${result.length} new tasks`)
+ return result
+ } catch (err) {
+ console.error("Failed to seed tasks:", err)
+ throw err
+ }
+}