70 lines
1.9 KiB
TypeScript
70 lines
1.9 KiB
TypeScript
import Prisma, { PrismaClient } from "../generated/prisma";
|
|
|
|
const client = new PrismaClient();
|
|
|
|
function getRandomDate(from: Date, to: Date) {
|
|
const fromDate = from.getTime();
|
|
return new Date(fromDate + Math.random() * (to.getTime() - fromDate));
|
|
}
|
|
|
|
function generateRandomChannelId() {
|
|
const min = 1000000000;
|
|
const max = 9999999999;
|
|
return Math.floor(Math.random() * (max - min + 1)) + min + '';
|
|
}
|
|
|
|
async function createManyChannels(feedId: number) {
|
|
const channelData: Prisma.Prisma.ChannelCreateManyInput[] = [ ];
|
|
|
|
if (Math.random() < .5) return;
|
|
|
|
for (let i = 0; i < Math.floor(Math.random() * 10) + 1; i++) {
|
|
channelData.push({
|
|
channel_id: generateRandomChannelId(),
|
|
feedId: feedId
|
|
});
|
|
}
|
|
|
|
await client.channel.createMany({ data: channelData });
|
|
}
|
|
|
|
async function deleteAllFeeds() {
|
|
await client.feed.deleteMany()
|
|
}
|
|
|
|
async function createManyFeeds() {
|
|
const feedData: Prisma.Prisma.FeedCreateManyInput[] = [ ];
|
|
|
|
for (let i = 0; i < 35; i++) {
|
|
feedData.push({
|
|
name: `News Network ${i}`,
|
|
url: `https://news-network-${i}.com/rss`,
|
|
guild_id: "1204426362794811453",
|
|
active: Math.random() < .5,
|
|
created_at: getRandomDate(
|
|
new Date("2020-01-01T00:00:00.000Z"),
|
|
new Date("2025-04-27T00:00:00.000Z")
|
|
)
|
|
});
|
|
}
|
|
|
|
const feedIds = await client.feed.createManyAndReturn({
|
|
data: feedData,
|
|
select: { id: true }
|
|
});
|
|
|
|
feedIds.forEach(async feed => await createManyChannels(feed.id));
|
|
}
|
|
|
|
async function main() {
|
|
// await deleteAllFeeds();
|
|
// await createManyFeeds();
|
|
}
|
|
|
|
main()
|
|
.then(async () => { await client.$disconnect() })
|
|
.catch(async (error: unknown) => {
|
|
console.log(error);
|
|
await client.$disconnect();
|
|
process.exit(1);
|
|
}); |