Commit af301853 authored by Yoon, Daeki's avatar Yoon, Daeki 😅
Browse files

마이그레이션 추가

parent b4873b7c
......@@ -25,3 +25,19 @@ useEffect(() => {
**SurveyLayout**
`SurveysLayout context`로부터 `surveys`를 받아 `surveyId`에 해당하는 `survey` 상태를 뽑아내서 `Outlet context``survey`를 내보냅니다.
## 데이터베이스 초기화
### admin user와 role 생성
```bash
npx ts-node src\migrations\create-tables.ts
```
### role 테이블 초기화
기존의 roles 테이블 항목들을 모두 삭제하고 새로 생성합니다.
```bash
npx ts-node src\migrations\create-roles.ts
```
import mongoose from "mongoose";
import { mongoUri } from "../config";
import { userDb, roleDb } from "../db";
import { Role, User } from "../models";
mongoose
.connect(mongoUri)
.then(async (mongoose) => {
// 기존 역할들 모두 삭제
console.log("clearing existing all roles");
await Role.deleteMany();
// 기본 역할 생성
console.log("creating default roles");
const roles = [
{ name: "admin", priority: 1 },
{ name: "manager", priority: 10 },
{ name: "staff", priority: 100 },
{ name: "user", priority: 1000 },
{ name: "guest", priority: 10000 },
];
await Role.create(roles);
mongoose.connection.close();
})
.catch((err) => console.log("mongoose connection error:", err));
export default {};
import mongoose from "mongoose";
import { mongoUri } from "../config";
import { userDb, roleDb } from "../db";
import { Role, User } from "../models";
mongoose
.connect(mongoUri)
.then(async (mongoose) => {
// 기존 역할들 모두 삭제
// console.log("clearing existing all roles");
// await Role.deleteMany();
// 기본 역할 생성
console.log("creating default roles");
const roles = [
{ name: "admin", priority: 1 },
{ name: "manager", priority: 10 },
{ name: "staff", priority: 100 },
{ name: "user", priority: 1000 },
{ name: "guest", priority: 10000 },
];
// await Role.create(roles);
const asyncRoles = roles.map(async (role) => {
console.log("creating role:", role.name, "...");
await Role.findOneAndUpdate({ name: role.name }, role, { upsert: true });
});
await Promise.all(asyncRoles);
// 기존 사용자 모두 삭제
// console.log("clearing all users");
// await User.deleteMany();
// admin 유저 생성
console.log("creating the admin user");
const adminRole = await roleDb.findRoleByName("admin");
if (!adminRole) {
throw new Error("admin role not exists");
}
const adminUser = {
email: "admin@example.com",
password: "asdfasdf",
name: "Administrator",
role: adminRole._id,
};
await User.findOneAndUpdate({ email: adminUser.email }, adminUser, {
upsert: true,
});
mongoose.connection.close();
})
.catch((err) => console.log("mongoose connection error:", err));
export default {};
import mongoose from "mongoose";
import { mongoUri } from "../config";
import { roleDb, userDb } from "../db";
import { User } from "../models";
mongoose
.connect(mongoUri)
.then(async (mongoose) => {
// 기존 사용자 모두 삭제
console.log("clearing all users");
await User.deleteMany();
// 기본 사용자 생성
console.log("creating the admin user");
const adminRole = await roleDb.findRoleByName("admin");
if (!adminRole) {
throw new Error("admin role not exists");
}
const adminUser = {
email: "admin@example.com",
password: "asdfasdf",
name: "Administrator",
role: adminRole._id,
};
await userDb.createUser(adminUser);
mongoose.connection.close();
})
.catch((err) => console.log("mongoose connection error:", err));
export default {};
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment