summaryrefslogtreecommitdiff
path: root/db/seeds/taskseed.ts
diff options
context:
space:
mode:
authorjoonhoekim <26rote@gmail.com>2025-03-25 15:55:45 +0900
committerjoonhoekim <26rote@gmail.com>2025-03-25 15:55:45 +0900
commit1a2241c40e10193c5ff7008a7b7b36cc1d855d96 (patch)
tree8a5587f10ca55b162d7e3254cb088b323a34c41b /db/seeds/taskseed.ts
initial commit
Diffstat (limited to 'db/seeds/taskseed.ts')
-rw-r--r--db/seeds/taskseed.ts43
1 files changed, 43 insertions, 0 deletions
diff --git a/db/seeds/taskseed.ts b/db/seeds/taskseed.ts
new file mode 100644
index 00000000..e58b29c2
--- /dev/null
+++ b/db/seeds/taskseed.ts
@@ -0,0 +1,43 @@
+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 }) {
+ const count = input.count ?? 100
+
+ try {
+ const allTasks: NewTask[] = []
+
+ for (let i = 0; i < count; i++) {
+ allTasks.push(generateRandomTask())
+ }
+
+ await db.delete(tasks)
+
+ console.log("📝 Inserting tasks", allTasks.length)
+
+ await db.insert(tasks).values(allTasks).onConflictDoNothing()
+ } catch (err) {
+ console.error(err)
+ }
+}