Skip to content

Commit fd545d3

Browse files
authored
Merge pull request #66 from PBTP/feature/terms
약관 ddl 추가 & module 수정
2 parents 23e0bdf + a54c415 commit fd545d3

File tree

4 files changed

+78
-2
lines changed

4 files changed

+78
-2
lines changed

postgres/sql/01_init.sql

Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1038,6 +1038,54 @@ BEGIN
10381038
END;
10391039
$$ LANGUAGE plpgsql;
10401040

1041+
CREATE TYPE term_category AS ENUM ('SERVICE', 'PRIVACY', 'MARKETING', 'LOCATION');
1042+
ALTER TYPE term_category OWNER TO postgres;
1043+
1044+
CREATE TABLE IF NOT EXISTS terms
1045+
(
1046+
term_id SERIAL PRIMARY KEY,
1047+
version INTEGER NOT NULL,
1048+
title TEXT NOT NULL,
1049+
description TEXT NOT NULL,
1050+
is_mandatory BOOLEAN DEFAULT FALSE NOT NULL,
1051+
term_category term_category NOT NULL DEFAULT 'SERVICE',
1052+
created_at TIMESTAMP DEFAULT NOW() NOT NULL,
1053+
modified_at TIMESTAMP DEFAULT NOW() NOT NULL,
1054+
deleted_at TIMESTAMP
1055+
);
1056+
1057+
COMMENT ON TABLE terms IS '약관';
1058+
1059+
COMMENT ON COLUMN terms.term_id IS '약관 ID';
1060+
COMMENT ON COLUMN terms.version IS '약관 버전';
1061+
COMMENT ON COLUMN terms.title IS '약관 제목';
1062+
COMMENT ON COLUMN terms.description IS '약관 설명';
1063+
COMMENT ON COLUMN terms.is_mandatory IS '필수 여부';
1064+
COMMENT ON COLUMN terms.term_category IS '약관 카테고리';
1065+
COMMENT ON COLUMN terms.created_at IS '생성 일시';
1066+
COMMENT ON COLUMN terms.modified_at IS '수정 일시';
1067+
COMMENT ON COLUMN terms.deleted_at IS '삭제 일시';
1068+
1069+
ALTER TABLE terms OWNER TO postgres;
1070+
GRANT DELETE, INSERT, SELECT, UPDATE ON terms TO postgres;
1071+
1072+
CREATE TABLE IF NOT EXISTS customer_terms (
1073+
customer_id INTEGER NOT NULL REFERENCES customers(customer_id),
1074+
term_id INTEGER NOT NULL REFERENCES terms(term_id),
1075+
version INTEGER NOT NULL,
1076+
agreed_at TIMESTAMP DEFAULT NOW() NOT NULL,
1077+
PRIMARY KEY (customer_id, term_id)
1078+
);
1079+
1080+
COMMENT ON TABLE customer_terms IS '고객 약관 동의';
1081+
1082+
COMMENT ON COLUMN customer_terms.customer_id IS '고객ID';
1083+
COMMENT ON COLUMN customer_terms.term_id IS '약관ID';
1084+
COMMENT ON COLUMN customer_terms.version IS '동의한 약관 버전';
1085+
COMMENT ON COLUMN customer_terms.agreed_at IS '동의 시각';
1086+
1087+
ALTER TABLE customer_terms OWNER TO postgres;
1088+
GRANT DELETE, INSERT, SELECT, UPDATE ON customer_terms TO postgres;
10411089

10421090
CREATE OR REPLACE FUNCTION customer_dummy_data_insert(add_row INT) RETURNS VOID AS
10431091
$$
@@ -1103,3 +1151,24 @@ BEGIN
11031151
FROM GENERATE_SERIES(1, add_row);
11041152
END;
11051153
$$ LANGUAGE plpgsql;
1154+
1155+
INSERT INTO terms (version, title, description, is_mandatory, term_category)
1156+
VALUES
1157+
(1, '서비스 이용 약관', '서비스 이용과 관련된 약관입니다.', true, 'SERVICE'),
1158+
(1, '개인정보 처리방침', '개인정보 수집 및 이용 동의에 대한 내용입니다.', true, 'PRIVACY'),
1159+
(1, '마케팅 수신 동의', '마케팅 및 프로모션 알림 수신에 대한 동의입니다.', false, 'MARKETING'),
1160+
(1, '위치 정보 이용 동의', '위치 정보 수집 및 이용에 대한 약관입니다.', false, 'LOCATION'),
1161+
(2, '개정 서비스 이용 약관', '서비스 이용 약관 개정 버전입니다.', true, 'SERVICE'),
1162+
(2, '개정 개인정보 처리방침', '개인정보 처리방침 개정 버전입니다.', true, 'PRIVACY');
1163+
1164+
INSERT INTO customer_terms (customer_id, term_id, version, agreed_at)
1165+
SELECT
1166+
c.customer_id,
1167+
t.term_id,
1168+
1 AS version,
1169+
NOW() AS agreed_at
1170+
FROM
1171+
(SELECT customer_id FROM customers ORDER BY customer_id LIMIT 50) AS c,
1172+
(SELECT term_id FROM terms WHERE version = 1) AS t;
1173+
1174+

src/app.module.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ import { PetModule } from './pet/pet.module';
2020
import { MetricsModule } from './system/matrics/metrics.module';
2121
import * as process from 'node:process';
2222
import { TestModule } from './test/test.module';
23+
import { TermModule } from "./terms/terms.module";
2324

2425
const appModules = [
2526
ConfigModule.forRoot({
@@ -69,6 +70,7 @@ const appModules = [
6970
CloudModule,
7071
ChatModule,
7172
PetModule,
73+
TermModule
7274
];
7375

7476
// 환경별 모듈 추가

src/terms/application/terms.service.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import { ITermRepository, TERM_REPOSITORY } from '../port/terms.repository';
55
import { CustomerTermDto } from '../presentation/customer-terms.dto';
66
import { Term } from '../terms.domain';
77
import { CustomerTerm } from '../customer-terms.domain';
8-
import { DATE_HOLDER, IDateHolder } from '../../../src/common/holder/date.holder';
8+
import { DATE_HOLDER, IDateHolder } from "../../common/holder/date.holder";
99

1010
@Injectable()
1111
export class TermService {

src/terms/terms.module.ts

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import { TermService } from "./application/terms.service";
66
import { CUSTOMER_TERM_REPOSITORY, CustomerTermRepository } from "./port/customer-terms.repository";
77
import { TERM_REPOSITORY, TermRepository } from "./port/terms.repository";
88
import { TermController } from "./presentation/terms.controller";
9+
import { DATE_HOLDER, DateHolder } from "../common/holder/date.holder";
910

1011
@Module({
1112
imports: [
@@ -18,7 +19,11 @@ import { TermController } from "./presentation/terms.controller";
1819
providers: [
1920
TermService,
2021
{provide: TERM_REPOSITORY, useClass: TermRepository},
21-
{provide: CUSTOMER_TERM_REPOSITORY, useClass: CustomerTermRepository}
22+
{provide: CUSTOMER_TERM_REPOSITORY, useClass: CustomerTermRepository},
23+
{
24+
provide: DATE_HOLDER,
25+
useClass: DateHolder
26+
}
2227
],
2328
exports: [TermService]
2429
})

0 commit comments

Comments
 (0)