Files
yogastic/yoga-app/src/app/seed/route.ts
Schneider Roland 04c436cb34 home and about page
2025-01-26 11:06:15 +01:00

133 lines
3.6 KiB
TypeScript

import bcrypt from 'bcryptjs';
import { invoices, customers, revenue, users } from './placeholder-data';
import strapiApi from "@/api/strapi/strapi-api";
// const client = await connectionPool.connect();
import connectionPool from "../../db/db";
async function seedUsers() {
await connectionPool.query(`CREATE EXTENSION IF NOT EXISTS "uuid-ossp"`);
await connectionPool.query(`
CREATE TABLE IF NOT EXISTS users (
id UUID DEFAULT uuid_generate_v4() PRIMARY KEY,
name VARCHAR(255) NOT NULL,
email TEXT NOT NULL UNIQUE,
password TEXT NOT NULL
);
`);
const insertedUsers = await Promise.all(
users.map(async (user) => {
const hashedPassword = await bcrypt.hash(user.password, 10);
return connectionPool.query(`
INSERT INTO users (id, name, email, password)
VALUES ('${user.id}', '${user.name}', '${user.email}', '${hashedPassword}')
ON CONFLICT (id) DO NOTHING;
`);
}),
);
return insertedUsers;
}
async function seedInvoices() {
await connectionPool.query(`CREATE EXTENSION IF NOT EXISTS "uuid-ossp"`);
await connectionPool.query(`
CREATE TABLE IF NOT EXISTS invoices (
id UUID DEFAULT uuid_generate_v4() PRIMARY KEY,
customer_id UUID NOT NULL,
amount INT NOT NULL,
status VARCHAR(255) NOT NULL,
date DATE NOT NULL
);
`);
const insertedInvoices = await Promise.all(
invoices.map(
(invoice) => connectionPool.query(`
INSERT INTO invoices (customer_id, amount, status, date)
VALUES ('${invoice.customer_id}', '${invoice.amount}', '${invoice.status}', '${invoice.date}')
ON CONFLICT (id) DO NOTHING;
`),
),
);
return insertedInvoices;
}
async function seedCustomers() {
await connectionPool.query(`CREATE EXTENSION IF NOT EXISTS "uuid-ossp"`);
await connectionPool.query(`
CREATE TABLE IF NOT EXISTS customers (
id UUID DEFAULT uuid_generate_v4() PRIMARY KEY,
name VARCHAR(255) NOT NULL,
email VARCHAR(255) NOT NULL,
image_url VARCHAR(255) NOT NULL
);
`);
const insertedCustomers = await Promise.all(
customers.map(
(customer) => connectionPool.query(`
INSERT INTO customers (id, name, email, image_url)
VALUES ('${customer.id}', '${customer.name}', '${customer.email}', '${customer.image_url}')
ON CONFLICT (id) DO NOTHING;
`),
),
);
return insertedCustomers;
}
async function seedRevenue() {
await connectionPool.query(`
CREATE TABLE IF NOT EXISTS revenue (
month VARCHAR(4) NOT NULL UNIQUE,
revenue INT NOT NULL
);
`);
const insertedRevenue = await Promise.all(
revenue.map(
(rev) => connectionPool.query(`
INSERT INTO revenue (month, revenue)
VALUES ('${rev.month}', '${rev.revenue}')
ON CONFLICT (month) DO NOTHING;
`),
),
);
return insertedRevenue;
}
export async function GET() {
// return Response.json({
// message:
// 'Uncomment this file and remove this line. You can delete this file when you are finished.',
// });
try {
console.info("get request")
strapiApi.getHomePage();
console.info("begin")
await connectionPool.query(`BEGIN`);
await seedUsers();
await seedCustomers();
await seedInvoices();
await seedRevenue();
await connectionPool.query(`COMMIT`);
console.info('Database seeded successfully')
return Response.json({ message: 'Database seeded successfully' });
} catch (error) {
await connectionPool.query(`ROLLBACK`);
console.info("error in seed")
return Response.json({ error }, { status: 500 });
}
}