From c74edf73970fa7dd0c0e5dc072f7ddbc86d3bc62 Mon Sep 17 00:00:00 2001 From: Indigo Tang Date: Sun, 6 Jul 2025 13:59:18 +0000 Subject: [PATCH] after add new toy for sharing, the new toys still not exist in toys tabl --- src/app/actions/toy.ts | 3 +- src/lib/db.ts | 137 +++++++++++++++++++++-------------------- toyshare.db | Bin 24576 -> 24576 bytes toyshare.db-shm | Bin 32768 -> 32768 bytes toyshare.db-wal | Bin 4136512 -> 4136512 bytes 5 files changed, 71 insertions(+), 69 deletions(-) diff --git a/src/app/actions/toy.ts b/src/app/actions/toy.ts index 836950f..85f13fb 100644 --- a/src/app/actions/toy.ts +++ b/src/app/actions/toy.ts @@ -6,7 +6,8 @@ import { createToy, updateToy, getToyById } from '@/data/operations'; import type { Toy } from '@/types'; // This type represents the data coming from the form. -export type ToyFormData = Omit & { +// Simplified for clarity and maintainability. +export type ToyFormData = { name: string; description: string; category: string; diff --git a/src/lib/db.ts b/src/lib/db.ts index 2373437..e1bde8d 100644 --- a/src/lib/db.ts +++ b/src/lib/db.ts @@ -15,81 +15,82 @@ db.pragma('journal_mode = WAL'); db.pragma('foreign_keys = ON'); function initDb() { - console.log("Resetting database and re-seeding data..."); + // Check if the users table exists. If it does, we assume the DB is initialized. + const table = db.prepare("SELECT name FROM sqlite_master WHERE type='table' AND name = 'users'").get(); - // Drop existing tables to ensure a clean slate on every run. - // This is useful for development to easily reset the data. - db.exec('DROP TABLE IF EXISTS toys'); - db.exec('DROP TABLE IF EXISTS users'); + if (!table) { + console.log("Database not found. Initializing and seeding..."); + // Create Users Table + db.exec(` + CREATE TABLE users ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + name TEXT NOT NULL, + nickname TEXT, + email TEXT NOT NULL UNIQUE, + role TEXT, + avatarUrl TEXT, + bio TEXT + ); + `); - // Create Users Table - db.exec(` - CREATE TABLE users ( - id INTEGER PRIMARY KEY AUTOINCREMENT, - name TEXT NOT NULL, - nickname TEXT, - email TEXT NOT NULL UNIQUE, - role TEXT, - avatarUrl TEXT, - bio TEXT - ); - `); + // Create Toys Table + db.exec(` + CREATE TABLE toys ( + id TEXT PRIMARY KEY, + name TEXT NOT NULL, + description TEXT NOT NULL, + category TEXT NOT NULL, + images TEXT, + unavailableRanges TEXT, + ownerId INTEGER NOT NULL, + pricePerDay REAL, + location TEXT, + FOREIGN KEY (ownerId) REFERENCES users(id) ON DELETE CASCADE + ); + `); + + console.log("Seeding initial data..."); - // Create Toys Table - db.exec(` - CREATE TABLE toys ( - id TEXT PRIMARY KEY, - name TEXT NOT NULL, - description TEXT NOT NULL, - category TEXT NOT NULL, - images TEXT, - unavailableRanges TEXT, - ownerId INTEGER NOT NULL, - pricePerDay REAL, - location TEXT, - FOREIGN KEY (ownerId) REFERENCES users(id) ON DELETE CASCADE - ); - `); - - console.log("Seeding initial data..."); + // Prepare insert statements + const insertUser = db.prepare(` + INSERT INTO users (id, name, nickname, email, role, avatarUrl, bio) + VALUES (@id, @name, @nickname, @email, @role, @avatarUrl, @bio) + `); + + const insertToy = db.prepare(` + INSERT INTO toys (id, name, description, category, images, unavailableRanges, ownerId, pricePerDay, location) + VALUES (@id, @name, @description, @category, @images, @unavailableRanges, @ownerId, @pricePerDay, @location) + `); - // Prepare insert statements - const insertUser = db.prepare(` - INSERT INTO users (id, name, nickname, email, role, avatarUrl, bio) - VALUES (@id, @name, @nickname, @email, @role, @avatarUrl, @bio) - `); - - const insertToy = db.prepare(` - INSERT INTO toys (id, name, description, category, images, unavailableRanges, ownerId, pricePerDay, location) - VALUES (@id, @name, @description, @category, @images, @unavailableRanges, @ownerId, @pricePerDay, @location) - `); + // Use a transaction for efficiency + const seedData = db.transaction(() => { + for (const user of rawUsers) { + insertUser.run({ + id: user.id, + name: user.name, + nickname: user.nickname ?? null, + email: user.email, + role: user.role ?? 'User', + avatarUrl: user.avatarUrl ?? null, + bio: user.bio ?? null + }); + } + for (const toy of rawToys) { + insertToy.run({ + ...toy, + images: JSON.stringify(toy.images), + unavailableRanges: JSON.stringify(toy.unavailableRanges), + }); + } + }); - // Use a transaction for efficiency - const seedData = db.transaction(() => { - for (const user of rawUsers) { - insertUser.run({ - id: user.id, - name: user.name, - nickname: user.nickname ?? null, - email: user.email, - role: user.role ?? 'User', - avatarUrl: user.avatarUrl ?? null, - bio: user.bio ?? null - }); - } - for (const toy of rawToys) { - insertToy.run({ - ...toy, - images: JSON.stringify(toy.images), - unavailableRanges: JSON.stringify(toy.unavailableRanges), - }); - } - }); + seedData(); - seedData(); - - console.log("Database initialization and seeding complete."); + console.log("Database initialization and seeding complete."); + } else { + console.log("Database already initialized."); + } } // Initialize and export db diff --git a/toyshare.db b/toyshare.db index 80c2414685219b4e0d0c0061109e052a1159b8f5..d9d59f62a78e38a62cf2495f9c4b65aafa6e3fd0 100644 GIT binary patch delta 78 zcmZoTz}Rqrae|Z(qaFhT0~-)S0n7S{Iz~*4dK(iW;#E>DOwG&_4bpTI6AessO-xb@ bb(0JeEp<&(jgym1ER&K_Ez&06iB|ytko*%R delta 78 zcmZoTz}Rqrae|Z(!yg6)1~wpu0_Nuvb&Qx8{%lN$h*wEWF*GttF)`6iGq$wQHAyly b)=e@?G}W~30*} diff --git a/toyshare.db-shm b/toyshare.db-shm index 91a62829fd8be970c972faf171cdc87327f6c9e4..b766a6f7bbde7fc0f4061effb3fd6907e2f1d7e5 100644 GIT binary patch literal 32768 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