
- Removed notes - Updated readme - DB - Updated initial db schema - Updated db seed - Created source, station, and tag models - Libs - Create content source importer - UI - Added content source UI & routes - Updated page layout - Created <Breadcrumbs> component
59 lines
1.3 KiB
TypeScript
59 lines
1.3 KiB
TypeScript
import { PrismaClient } from "@prisma/client";
|
|
import bcrypt from "bcryptjs";
|
|
import { importSource } from "~/lib/importer.server";
|
|
import { saveSource } from "~/models/source.server";
|
|
|
|
const prisma = new PrismaClient();
|
|
|
|
async function seed() {
|
|
const email = "testuser@foobar.com";
|
|
|
|
// cleanup the existing database
|
|
await prisma.user.delete({ where: { email } }).catch(() => {
|
|
// no worries if it doesn't exist yet
|
|
});
|
|
|
|
const hashedPassword = await bcrypt.hash("testuser", 10);
|
|
|
|
await prisma.user.create({
|
|
data: {
|
|
email,
|
|
password: {
|
|
create: {
|
|
hash: hashedPassword
|
|
}
|
|
}
|
|
}
|
|
});
|
|
|
|
const source = {
|
|
name: "Take Home Challenge",
|
|
connectionUrl: "https://s3-us-west-1.amazonaws.com/cdn-web.tunein.com/stations.json",
|
|
type: "json"
|
|
};
|
|
|
|
await prisma.contentSource
|
|
.delete({
|
|
where: { connectionUrl: source.connectionUrl }
|
|
})
|
|
.catch(() => {
|
|
// no worries if it doesn't exist yet
|
|
});
|
|
|
|
const s = await saveSource(source);
|
|
|
|
await importSource(s);
|
|
|
|
|
|
console.log(`Database has been seeded. 🌱`);
|
|
}
|
|
|
|
seed()
|
|
.catch((e) => {
|
|
console.error(e);
|
|
process.exit(1);
|
|
})
|
|
.finally(async () => {
|
|
await prisma.$disconnect();
|
|
});
|