database seed and coloredConsole

This commit is contained in:
Timur Ercan
2023-01-11 11:44:35 +01:00
parent 5003e32e77
commit c024b03acc
7 changed files with 419 additions and 4203 deletions

View File

@ -3,6 +3,7 @@ import { ReactElement, ReactNode } from "react";
import type { AppProps } from "next/app"; import type { AppProps } from "next/app";
import { NextPage } from "next"; import { NextPage } from "next";
import { SessionProvider } from "next-auth/react"; import { SessionProvider } from "next-auth/react";
export { coloredConsole } from "@documenso/lib";
export type NextPageWithLayout<P = {}, IP = P> = NextPage<P, IP> & { export type NextPageWithLayout<P = {}, IP = P> = NextPage<P, IP> & {
getLayout?: (page: ReactElement) => ReactNode; getLayout?: (page: ReactElement) => ReactNode;

4518
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@ -4,10 +4,14 @@
"scripts": { "scripts": {
"dev": "cd apps&&cd web&&next dev", "dev": "cd apps&&cd web&&next dev",
"build": "cd apps&&cd web&&next build", "build": "cd apps&&cd web&&next build",
"start": "cd apps&&cd web&&next start" "start": "cd apps&&cd web&&next start",
"db-seed": "prisma db seed"
}, },
"workspaces": [ "workspaces": [
"apps/*", "apps/*",
"packages/*" "packages/*"
] ],
"prisma": {
"seed": "ts-node --transpile-only ./packages/prisma/seed.ts"
}
} }

View File

@ -0,0 +1,40 @@
// https://stackoverflow.com/questions/9781218/how-to-change-node-jss-console-font-color
export default class coloredConsole {
public static setupColoredConsole(): void {
let infoLog = console.info;
let logLog = console.log;
let errorLog = console.error;
let warnLog = console.warn;
let colors = {
Reset: "\x1b[0m",
Red: "\x1b[31m",
Green: "\x1b[32m",
Yellow: "\x1b[33m",
};
console.info = function (args: any) {
let copyArgs = Array.prototype.slice.call(arguments);
copyArgs.unshift(colors.Green);
copyArgs.push(colors.Reset);
infoLog.apply(null, copyArgs);
};
console.warn = function (args: any) {
let copyArgs = Array.prototype.slice.call(arguments);
copyArgs.unshift(colors.Yellow);
copyArgs.push(colors.Reset);
warnLog.apply(null, copyArgs);
};
console.error = function (args: any) {
let copyArgs = Array.prototype.slice.call(arguments);
copyArgs.unshift(colors.Red);
copyArgs.push(colors.Reset);
errorLog.apply(null, copyArgs);
};
}
}
coloredConsole.setupColoredConsole();

View File

@ -1 +1 @@
export {}; export { coloredConsole } from "./coloredConsole";

View File

@ -4,9 +4,18 @@
"private": true, "private": true,
"main": "index.ts", "main": "index.ts",
"devDependencies": { "devDependencies": {
"@types/node": "^18.11.18",
"ts-node": "^10.9.1",
"typescript": "4.8.4"
}, },
"dependencies": { "dependencies": {
"prisma": "^4.8.0", "@prisma/client": "^4.8.0",
"@prisma/client": "^4.8.0" "prisma": "^4.8.0"
},
"scripts": {
"db-seed": "prisma db seed"
},
"prisma": {
"seed": "ts-node --transpile-only ./seed.ts"
} }
} }

40
packages/prisma/seed.ts Normal file
View File

@ -0,0 +1,40 @@
import prisma from "@documenso/prisma";
import { hashPassword } from "@documenso/lib/auth";
import { IdentityProvider } from "@prisma/client";
import { coloredConsole } from "@documenso/lib";
async function createUser(userData: { email: string; password: string }) {
try {
await prisma.user.create({
data: {
email: userData.email,
password: userData.password,
identityProvider: IdentityProvider.DOCUMENSO,
},
});
} catch (error) {
console.info(
`WARN: Could not create user "${userData.email}". Maybe the email is already taken?`
);
}
}
async function main() {
await createUser({
email: "example@documenso.com",
password: await hashPassword("123456789"),
});
}
main()
.then(() => {
coloredConsole.setupColoredConsole();
console.log("Finished seeding 🌱");
})
.catch((e) => {
console.error(e);
process.exit(1);
})
.finally(async () => {
await prisma.$disconnect();
});