쇼핑몰 만들기 - DB 세팅

Kang JaeHyeon·2021년 9월 6일
0

쇼핑몰 만들기

목록 보기
2/6

Basket model

const Sequelize=require('sequelize');

module.exports=class Basket extends Sequelzie.Model{
	static init(sequelize){
		return super.init({
			basketproduct:{
				type:Sequelize.STRING(50),
				allowNull:false,
			},
			ordercount:{
				type:Sequelize.INTEGER,
				allowNull:false,
			}
		},{
			sequelize,
			timestamps:true,
			underscored:false,
			modelName:'Basket',
			tableName:'baskets',
			charset:'utfmb4',
			collate:'utfmb4_general_ci',
		})
	}
}

장바구니 모델이다. basketproduct(장바구니에 담은 상품), ordercount(담은 수량)컬럼을 추가하였다..

Buy model

const Sequelize=require('sequelize');

module.exports=class Buy extends Sequelize.Model{
	static init(sequelize){
		return super.init({
			buyproduct:{
				type:Sequelize.STRING(50),
				allowNull:false,
			},
			buycount:{
				type:Sequelize.INTEGER,
				allowNull:false,
			}
		},{
			sequelize,
			timestamps:true,
			underscored:false,
			modelName:'Buy',
			tableName:'buys',
			charset:'utf8mb4',
			collate:'utf8mb4_general_ci',
		})
	}
}

구매(주문)한 상품의 모델이다. buyproduct(구매한 상품), buycount(구매 수량)컬럼을 추가하였다.

Comment model

const Sequelize=require('sequelize');

module.exports=class buy extends Sequelize.Model{
	static init(sequelize){
		return super.init({
			rating:{
				type:Sequelize.INTEGER,
				allowNull:false,
			},
			content:{
				type:Sequelize.STRING(500),
				allowNull:false,
			}
		},{
			sequelize,
			timestamps:true,
			underscored:false,
			modelName:'Comment',
			tableName:'comments',
			charset:'utf8',
			collate:'utf8_general_ci',
		})
	}
}

댓글(상품평) 모델이다. rating(평점), content(상품평)컬럼을 추가하였다.

Hashtag model

const Sequelize=require('sequelize');

module.exports=class Hashtag extends Sequelize.Model{
	static init(sequelize){
		return super.init({
			title:{
				type:Sequelize.STRING(50),
				allowNull:false,
				unique:true,
			},
		},{
			sequelize,
			timestamps:true,
			modelName:'Hashtag',
			tableName:'hashtags',
			charset:'utf8mb4',
			collate:'utf8mb4_general_ci',
		})
	}
};

해시태그 모델이다. 상품을 검색할 때 상품에 등록된 해시태그를 저장하는 모델이다. title(해시태그명)컬럼만 추가하였다.

Product model

const Sequelize=require('sequelize');

module.exports=class Product extends Sequelize.Model{
	static init(sequelize){
		return super.init({
			name:{
				type:Sequelize.STRING(50),
				allowNull:false,
			},
			img:{
				type:Sequelize.STRING(300),
				allowNull:false,
			},
			content:{
				type:Sequelize.STRING(500),
				allowNull:false,
			},
			price:{
				type:Sequelize.INTEGER,
				allowNull:false,
			},
			remaincount:{
				type:Sequelize.INTEGER,
				allowNull:false,
			},
			hashtag:{
				type:Sequelize.STRING(500),
				allowNull:true,
			}
		},{
			sequelize,
			timestamps:true,
			underscored:false,
			modelName:'Product',
			tableName:'products',
			charset:'utf8mb4',
			collate:'utf8mb4_general_ci',
		})
	}
}

쇼핑몰에 등록된 상품의 정보를 저장하는 모델이다. name(상품명), img(상품 이미지 경로), content(상품 설명), price(상품 가격), remaincount(재고 수량), hashtag(해시태그)컬럼을 추가하였다.

User model

const Sequelize=require('sequelize');

module.exports=class User extends Sequelize.Model{
	static init(sequelize){
		return super.init({
			email:{
				type:Sequelize.STRING(40),
				allowNull:false,
			},
			nick:{
				type:Sequelize.STRING(50),
				allowNull:false,
			},
			password:{
				type:Sequelize.STRING(200),
				allowNull:false,
			},
			auth:{
				type:Sequelize.STRING(10),
				allowNull:false,
			}
		},{
			sequelize,
			timestamps:true,
			paranoid:true,
			modelName:'User',
			tableName:'users',
			charset:'utf8',
			collate:'utf8_general_ci',
		})
	}
}

쇼핑몰을 이용하는 사용자의 정보를 저장하는 모델이다. email(이메일), nick(닉네임), password(비밀번호), auth(권한)컬럼을 추가하였다.
auth의 값에 따라서 관리자 또는 일반유저 임을 구분할 수 있다.

추가적으로 모델 간의 관계는 다음 글에서 정리할 예정이다.

0개의 댓글