55 lines
1.2 KiB
TypeScript
55 lines
1.2 KiB
TypeScript
import "./bootstrap";
|
||
import { UserRole } from "@shared/types";
|
||
import { parseEmail } from "@shared/utils/email";
|
||
import teamCreator from "@server/commands/teamCreator";
|
||
import env from "@server/env";
|
||
import { Team, User } from "@server/models";
|
||
import { sequelize } from "@server/storage/database";
|
||
|
||
const email = process.argv[2];
|
||
|
||
export default async function main(exit = false) {
|
||
const teamCount = await Team.count();
|
||
if (teamCount === 0) {
|
||
const name = parseEmail(email).local;
|
||
const user = await sequelize.transaction(async (transaction) => {
|
||
const team = await teamCreator({
|
||
name: "Wiki",
|
||
subdomain: "wiki",
|
||
authenticationProviders: [],
|
||
transaction,
|
||
ip: "127.0.0.1",
|
||
});
|
||
|
||
return await User.create(
|
||
{
|
||
teamId: team.id,
|
||
name,
|
||
email,
|
||
role: UserRole.Admin,
|
||
},
|
||
{
|
||
transaction,
|
||
}
|
||
);
|
||
});
|
||
|
||
console.log(
|
||
"email",
|
||
`✅ Seed done – sign-in link: ${
|
||
env.URL
|
||
}/auth/email.callback?token=${user.getEmailSigninToken()}`
|
||
);
|
||
} else {
|
||
console.log("Team already exists, aborting");
|
||
}
|
||
|
||
if (exit) {
|
||
process.exit(0);
|
||
}
|
||
}
|
||
|
||
if (process.env.NODE_ENV !== "test") {
|
||
void main(true);
|
||
}
|