나의 개발일지(김지헌)
항해 99 88일차 12/15일 본문
오늘은 최종 발표 자료를 검토하고 영상 제작을 했었다,
이때 까지 진행 한거를 말로 풀어서 쓸려고 하니 어려웠던거 같고 보기좋게 ppt를 만드는게 어려운거 같았다.
그리고 이미지 리사이징을 람다로 해볼까 생각 하고 있고 cd도 다시 적용을 했고 서버 바꿔서 다시 적용 하는거는 어렵지 않았다. 다음에는 서버를 구축 할 때 탄력적 ip를 써서 껏다 켜도 ip가 바뀌지 않게 해야곘다고 다짐 했다.
그리고 sequelize의 마이그래이트와 테이블 생성 코드에서 배포용으로 돌릴시 코드의 오류를 발견 했고 개선했다.
//config.ts
import dotenv from 'dotenv';
dotenv.config();
type Config = {
username: string;
password: string;
database: string;
host: string;
[key: string]: string | boolean; //객체에 키와 벨류가 있으면키도 문자 밸류도 문자
};
interface IConfigGroup {
development: Config;
test: Config;
production: Config
}
const config :IConfigGroup = {
development: {
username: process.env.DB_USER!,
password: process.env.DB_PASSWORD!,
database: process.env.DB_NAME!,
host: process.env.DB_HOST!,
dialect: 'mysql1',
},
test: {
username: process.env.DB_USER!,
password: process.env.DB_PASSWORD!,
database: process.env.DB_NAME!,
host: process.env.DB_HOST!,
dialect: 'mysql',
},
production: {
username: process.env.DB_USER!,
password: process.env.DB_PASSWORD!,
database: process.env.DB_NAME!,
host: process.env.DB_HOST!,
dialect: 'mysql',
},
};
export default config;
//create_db.ts
//디비 만들기 폴더
import { Sequelize, Options } from 'sequelize';
import dotenv from 'dotenv';
dotenv.config();
//options 구현 옵션
class options implements Options {
dialect!: 'mysql';
username!: string;
password!: string;
host!:string;
}
//데이터베이스 옵션
const createDBOptions = new options();
createDBOptions.username = process.env.DB_USER!;
createDBOptions.password = process.env.DB_PASSWORD!;
createDBOptions.host = process.env.DB_HOST!;
createDBOptions.dialect = 'mysql';
createDBOptions.host = process.env.DB_HOST!;
//DB_NAME 없을시 new DateBase 생성
const db_name = process.env.DB_NAME || 'new DataBase';
//시퀄라이즈 생성 메서드
const dbCreateSequelize = new Sequelize(createDBOptions);
console.log(`======Create DataBase : ${db_name}======`);
//데이터베이스 생성 메서드
dbCreateSequelize
.getQueryInterface() //인스턴스 반환
.createDatabase(db_name)
.then(() => {
console.log('✅db create success!');
})
.catch((e) => {
console.log('❗️error in create db : ', e);
});
//migrate.ts
import Weather from '../models/weather'; //방금 만들어준 Weather
import Camp from '../models/camp';
import Topic from '../models/topic';
import LookUp from '../models/lookUp';
import User from '../models/user';
import Pick from '../models/pick';
import Review from '../models/review';
import Trip from '../models/trip';
import sequelize from '../models/sequlize';
/*table 리스트르르 받아서 배열로 저장
referenced by a foreign key constrain 에러로 인한 drop create 테이블 리스트분리
*/
const dropTable = [Review, Trip, Pick, LookUp, Topic, Camp, User, Weather];
const createTable = [Camp, Topic, User, Review, Trip, Pick, LookUp, Weather];
console.log(`======Drop & Create Table======`);
//배열을 반복문을 돌려서 넣어줌
async function migrate() {
for (let i = 0; i < dropTable.length; i++) {
await dropTable[i]
.drop()
.then(() => {
console.log(`✅Success drop ${dropTable[i]} Table`);
})
.catch((err) => {
console.log(`❗️Error in drop ${dropTable[i]} Table : `, err);
});
}
for (let i = 0; i < createTable.length; i++) {
await createTable[i]
//sync <=데이터베이스 연동와 자동 연동하기
.sync({ force: false }) //true : 삭제후 migrate , false : 삭제 안하고 migrate
.then(() => {
console.log(`✅Success Create ${createTable[i]} Table`);
})
.catch((err) => {
console.log(`❗️Error in Create ${createTable[i]} Table : `, err);
});
}
sequelize.sync();
}
(async () => {
await sequelize.query(`DROP TABLE IF EXISTS topicMapping`);
await migrate();
})();
//sequlize.ts
import { Sequelize } from 'sequelize';
import config from '../config/config';
const env = (process.env.NODE_ENV as 'production' | 'test' | 'development')
const { username, password, database, host, dialect } = config[env];
const sequelize = new Sequelize(database, username, password,{host: host ,dialect: 'mysql'});
export { sequelize };
export default sequelize;
sequlize.ts와 migrate.ts 폴더에서 host를 넣어주지 않았기 때문에 생성 및 데이터베이스를 연결할 때 .env파일을 바꾸어 주었으나 디폴트 값으로 127.0.0.1로 계속 연결이 되는 오류를 발견 했고 코드를 수정하여 배포했다.
'항해 99' 카테고리의 다른 글
항해 99 90일차 12/17일 (0) | 2022.12.18 |
---|---|
항해 99 89일차 12/16일 (0) | 2022.12.17 |
항해 99 87일차 12/14일 (0) | 2022.12.15 |
항해 99 86일차 12/13일 (0) | 2022.12.14 |
항해 99 85일차 12/12일 (2) | 2022.12.13 |