From ff2f4ee4707c16d47ea47b6c1b91fc1138426df7 Mon Sep 17 00:00:00 2001 From: 12xii Date: Sat, 30 Sep 2023 13:35:43 +0900 Subject: [PATCH 1/2] =?UTF-8?q?=F0=9F=97=83=EF=B8=8F=20::=20db=20::=20busi?= =?UTF-8?q?nessTable=20Setting?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - table setting --- package.json | 3 +- src/enums/businessType.enum.ts | 10 ++++ src/enums/clubType.enum.ts | 5 ++ src/enums/loc.enum.ts | 3 + src/models/business.ts | 101 +++++++++++++++++++++++++++++++++ src/models/dataSource.ts | 3 +- src/models/index.ts | 0 7 files changed, 122 insertions(+), 3 deletions(-) create mode 100644 src/enums/businessType.enum.ts create mode 100644 src/enums/clubType.enum.ts create mode 100644 src/enums/loc.enum.ts create mode 100644 src/models/business.ts delete mode 100644 src/models/index.ts diff --git a/package.json b/package.json index 73d925b..949b7ce 100644 --- a/package.json +++ b/package.json @@ -4,8 +4,7 @@ "description": "", "main": "index.js", "scripts": { - "test": "test", - "start": "start" + "start": "cd src && ts-node index.ts" }, "repository": { "type": "git", diff --git a/src/enums/businessType.enum.ts b/src/enums/businessType.enum.ts new file mode 100644 index 0000000..7382b23 --- /dev/null +++ b/src/enums/businessType.enum.ts @@ -0,0 +1,10 @@ +export enum businessType { + yuseongMagic = '유성매직네트워크', + recordImage = '기록 영상', + publicOpinion = '공론', + alleyEconomy = '골목경제', + careSystem = '돌봄체계 구축', + olderLeisure = '노년층 여가활동', + sharePlace = '공유공간 활성화', + livinglab = '리빙랩' +} \ No newline at end of file diff --git a/src/enums/clubType.enum.ts b/src/enums/clubType.enum.ts new file mode 100644 index 0000000..9eb33a8 --- /dev/null +++ b/src/enums/clubType.enum.ts @@ -0,0 +1,5 @@ +export enum clubType { + residentMeeting = '주민모임', + npPrivateOrg = '비영리민간단체', + npCorporation = '비영리법인' +} \ No newline at end of file diff --git a/src/enums/loc.enum.ts b/src/enums/loc.enum.ts new file mode 100644 index 0000000..0894284 --- /dev/null +++ b/src/enums/loc.enum.ts @@ -0,0 +1,3 @@ +export enum loc { + +} \ No newline at end of file diff --git a/src/models/business.ts b/src/models/business.ts new file mode 100644 index 0000000..f18d9fe --- /dev/null +++ b/src/models/business.ts @@ -0,0 +1,101 @@ +import { Column, Entity, PrimaryColumn, PrimaryGeneratedColumn } from "typeorm"; +import { businessType } from "../enums/businessType.enum.js"; +import { clubType } from "../enums/clubType.enum.js"; +import { loc } from "../enums/loc.enum.js"; + +@Entity() +export class Business { + @PrimaryGeneratedColumn() + id!: number; + + @Column({ + type: 'varchar' + }) + businessType!: businessType; + + @Column({ + type: 'varchar' + }) + clubName!: string; + + @Column({ + type: 'boolean' + }) + isContiguous!: boolean; + + @Column({ + type: 'varchar', + nullable: true + }) + contiguousLocation?: loc; + + @Column({ + type: 'varchar' + }) + businessName!: string; + + @Column({ + type: 'integer' + }) + totalBudget!: number; + + @Column({ + type: 'integer' + }) + subsidy!: number; + + @Column({ + type: 'integer' + }) + selfInflicted!: number; + + @Column({ + type: 'varchar' + }) + clubType!: clubType; + + @Column({ + type: 'integer' + }) + countOfManager!: number; + + @Column({ + type: 'integer', + default: 0 + }) + countOfMember!: number; + + @Column({ + type: 'varchar', + nullable: true + }) + clubAddress?: string; + + @Column({ + type: 'integer' + }) + clubRegisterNumber!: number; + + @Column({ + type: 'boolean', + default: false + }) + isIncludingInfo!: boolean; + + @Column({ + type: 'boolean', + default: false + }) + isIncludingMemberList!: boolean; + + @Column({ + type: 'boolean', + default: false + }) + isIncludingPlan!: boolean; + + @Column({ + type: 'integer' + }) + year!: number; +} \ No newline at end of file diff --git a/src/models/dataSource.ts b/src/models/dataSource.ts index 50f7835..7a7f70e 100644 --- a/src/models/dataSource.ts +++ b/src/models/dataSource.ts @@ -1,6 +1,7 @@ import { configDotenv } from "dotenv"; import "reflect-metadata"; import { DataSource } from "typeorm"; +import { Business } from "./business.js"; configDotenv(); @@ -13,7 +14,7 @@ export const AppDataSource = new DataSource({ database: process.env.DB_NAME, synchronize: true, logging: false, - entities: [], + entities: [Business], migrations: [], subscribers: [], }); \ No newline at end of file diff --git a/src/models/index.ts b/src/models/index.ts deleted file mode 100644 index e69de29..0000000 From c341052c6cca09197784bd1ac3919a5851c64772 Mon Sep 17 00:00:00 2001 From: 12xii Date: Wed, 4 Oct 2023 10:07:11 +0900 Subject: [PATCH 2/2] =?UTF-8?q?=F0=9F=97=83=EF=B8=8F=20::=20db=20::=20db?= =?UTF-8?q?=20setting?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - db table setting --- src/enums/amount.enum.ts | 5 + src/enums/businessType.enum.ts | 11 +- src/enums/clubType.enum.ts | 6 +- src/enums/key.enum.ts | 4 + src/enums/loc.enum.ts | 5 +- src/enums/related.enum.ts | 7 ++ src/enums/sex.enum.ts | 4 + src/enums/total.enum.ts | 4 + src/enums/type.enum.ts | 5 + src/index.ts | 2 +- src/models/achievementStatus.entity.ts | 39 +++++++ src/models/budgetDetail.entity.ts | 47 ++++++++ src/models/budgetPlan.entity.ts | 67 +++++++++++ src/models/budgetResult.entity.ts | 34 ++++++ src/models/business.entity.ts | 141 +++++++++++++++++++++++ src/models/business.ts | 101 ---------------- src/models/businessDetail.entity.ts | 37 ++++++ src/models/businessInformation.entity.ts | 100 ++++++++++++++++ src/models/businessMapping.entity.ts | 39 +++++++ src/models/businessPlan.entity.ts | 87 ++++++++++++++ src/models/changeStatus.entity.ts | 32 +++++ src/models/dataSource.ts | 46 +++++++- src/models/localResource.entity.ts | 35 ++++++ src/models/operationDetail.entity.ts | 40 +++++++ src/models/performanceDetail.entity.ts | 54 +++++++++ src/models/performanceResult.entity.ts | 69 +++++++++++ src/models/pushResult.entity.ts | 37 ++++++ src/models/regularyMeeting.entity.ts | 35 ++++++ src/models/resident.entity.ts | 39 +++++++ src/models/resultReport.entity.ts | 47 ++++++++ src/models/runningRule.entity.ts | 24 ++++ src/models/status.entity.ts | 30 +++++ src/models/usingResource.entity.ts | 37 ++++++ tsconfig.json | 2 +- 34 files changed, 1152 insertions(+), 120 deletions(-) create mode 100644 src/enums/amount.enum.ts create mode 100644 src/enums/key.enum.ts create mode 100644 src/enums/related.enum.ts create mode 100644 src/enums/sex.enum.ts create mode 100644 src/enums/total.enum.ts create mode 100644 src/enums/type.enum.ts create mode 100644 src/models/achievementStatus.entity.ts create mode 100644 src/models/budgetDetail.entity.ts create mode 100644 src/models/budgetPlan.entity.ts create mode 100644 src/models/budgetResult.entity.ts create mode 100644 src/models/business.entity.ts delete mode 100644 src/models/business.ts create mode 100644 src/models/businessDetail.entity.ts create mode 100644 src/models/businessInformation.entity.ts create mode 100644 src/models/businessMapping.entity.ts create mode 100644 src/models/businessPlan.entity.ts create mode 100644 src/models/changeStatus.entity.ts create mode 100644 src/models/localResource.entity.ts create mode 100644 src/models/operationDetail.entity.ts create mode 100644 src/models/performanceDetail.entity.ts create mode 100644 src/models/performanceResult.entity.ts create mode 100644 src/models/pushResult.entity.ts create mode 100644 src/models/regularyMeeting.entity.ts create mode 100644 src/models/resident.entity.ts create mode 100644 src/models/resultReport.entity.ts create mode 100644 src/models/runningRule.entity.ts create mode 100644 src/models/status.entity.ts create mode 100644 src/models/usingResource.entity.ts diff --git a/src/enums/amount.enum.ts b/src/enums/amount.enum.ts new file mode 100644 index 0000000..01da514 --- /dev/null +++ b/src/enums/amount.enum.ts @@ -0,0 +1,5 @@ +export enum Amount { + increase = '증가', + nothing = '변화 없음', + decrease = '감소' +} \ No newline at end of file diff --git a/src/enums/businessType.enum.ts b/src/enums/businessType.enum.ts index 7382b23..dcfdd8a 100644 --- a/src/enums/businessType.enum.ts +++ b/src/enums/businessType.enum.ts @@ -1,10 +1,3 @@ -export enum businessType { - yuseongMagic = '유성매직네트워크', - recordImage = '기록 영상', - publicOpinion = '공론', - alleyEconomy = '골목경제', - careSystem = '돌봄체계 구축', - olderLeisure = '노년층 여가활동', - sharePlace = '공유공간 활성화', - livinglab = '리빙랩' +export enum BusinessType { + } \ No newline at end of file diff --git a/src/enums/clubType.enum.ts b/src/enums/clubType.enum.ts index 9eb33a8..01a4d11 100644 --- a/src/enums/clubType.enum.ts +++ b/src/enums/clubType.enum.ts @@ -1,5 +1,3 @@ -export enum clubType { - residentMeeting = '주민모임', - npPrivateOrg = '비영리민간단체', - npCorporation = '비영리법인' +export enum ClubType { + } \ No newline at end of file diff --git a/src/enums/key.enum.ts b/src/enums/key.enum.ts new file mode 100644 index 0000000..78dd04b --- /dev/null +++ b/src/enums/key.enum.ts @@ -0,0 +1,4 @@ +export enum Key { + budgetSum = '예산액', + execution = '집행액' +} \ No newline at end of file diff --git a/src/enums/loc.enum.ts b/src/enums/loc.enum.ts index 0894284..abd8f5a 100644 --- a/src/enums/loc.enum.ts +++ b/src/enums/loc.enum.ts @@ -1,3 +1,4 @@ -export enum loc { - +export enum Loc { + mannyeon = '만년동', + gajang = '가장동', } \ No newline at end of file diff --git a/src/enums/related.enum.ts b/src/enums/related.enum.ts new file mode 100644 index 0000000..d262ffe --- /dev/null +++ b/src/enums/related.enum.ts @@ -0,0 +1,7 @@ +export enum Related { + veryDislike = '매우 그렇지 않다', + not = '그렇지 않다', + normal = '보통이다', + yes = '그렇다', + veryTrue = '매우 그렇다' +} \ No newline at end of file diff --git a/src/enums/sex.enum.ts b/src/enums/sex.enum.ts new file mode 100644 index 0000000..08f5b4a --- /dev/null +++ b/src/enums/sex.enum.ts @@ -0,0 +1,4 @@ +export enum Sex { + male = '남성', + female = '여성' +} \ No newline at end of file diff --git a/src/enums/total.enum.ts b/src/enums/total.enum.ts new file mode 100644 index 0000000..df46757 --- /dev/null +++ b/src/enums/total.enum.ts @@ -0,0 +1,4 @@ +export enum Total { + num = '총횟수', + people = '총인원' +} \ No newline at end of file diff --git a/src/enums/type.enum.ts b/src/enums/type.enum.ts new file mode 100644 index 0000000..dbac548 --- /dev/null +++ b/src/enums/type.enum.ts @@ -0,0 +1,5 @@ +export enum Type { + judge = '심사', + choice = '선정', + fail = '탈락' +} \ No newline at end of file diff --git a/src/index.ts b/src/index.ts index 9fb2e27..e6dea2e 100644 --- a/src/index.ts +++ b/src/index.ts @@ -12,7 +12,7 @@ configDotenv(); const app = express(); const port = process.env.PORT || 8000; -AppDataSource.initialize() +await AppDataSource.initialize() .then(() => { console.log(`DB has initted`) }) .catch((err) => { console.error(err) }) diff --git a/src/models/achievementStatus.entity.ts b/src/models/achievementStatus.entity.ts new file mode 100644 index 0000000..977aa60 --- /dev/null +++ b/src/models/achievementStatus.entity.ts @@ -0,0 +1,39 @@ +import { Column, Entity, JoinColumn, OneToOne, PrimaryColumn, Relation } from "typeorm"; +import { Amount } from "../enums/amount.enum.js"; +import { Related } from "../enums/related.enum.js"; +import { PerformanceResult } from "./performanceResult.entity.js"; + +@Entity() +export class AchievementStatus { + // 기대 사항 달성 정도 + + @PrimaryColumn() + id!: number; + + @OneToOne( + () => PerformanceResult, + performanceResult => performanceResult.achievementStatus + ) + @JoinColumn({ name: 'id' }) + performanceResult!: Relation; + + @Column({ + type: 'varchar' + }) + changedMember!: Relation; + + @Column({ + type: 'varchar' + }) + increaseMain!: Relation; + + @Column({ + type: 'varchar' + }) + increaseNew!: Relation; + + @Column({ + type: 'varchar' + }) + changedRelation!: Relation; +} \ No newline at end of file diff --git a/src/models/budgetDetail.entity.ts b/src/models/budgetDetail.entity.ts new file mode 100644 index 0000000..a7b14da --- /dev/null +++ b/src/models/budgetDetail.entity.ts @@ -0,0 +1,47 @@ +import { Column, Entity, JoinColumn, ManyToOne, PrimaryGeneratedColumn } from "typeorm"; +import { BusinessPlan } from "./businessPlan.entity.js"; + +@Entity() +export class BudgetDetail { + // 예산 상세 + + @PrimaryGeneratedColumn() + id!: number; + + @ManyToOne( + () => BusinessPlan, + businessPlan => businessPlan.budgetDetail + ) + @JoinColumn({ name: 'id' }) + businessPlan!: BusinessPlan; + + @Column({ + type: 'varchar' + }) + budgetHead!: string; + + @Column({ + type: 'varchar' + }) + budgetOrganization!: string; + + @Column({ + type: 'varchar' + }) + subsidy!: string; + + @Column({ + type: 'integer' + }) + subsidyBudget!: number; + + @Column({ + type: 'varchar' + }) + self!: string; + + @Column({ + type: 'integer' + }) + selfBudget!: number; +} \ No newline at end of file diff --git a/src/models/budgetPlan.entity.ts b/src/models/budgetPlan.entity.ts new file mode 100644 index 0000000..2b3c983 --- /dev/null +++ b/src/models/budgetPlan.entity.ts @@ -0,0 +1,67 @@ +import { Column, Entity, JoinColumn, OneToOne, PrimaryColumn, Relation } from "typeorm"; +import { BusinessPlan } from "./businessPlan.entity.js"; + +@Entity() +export class BudgetPlan { + // 예산 기획 + + @PrimaryColumn({ + type: 'integer' + }) + id!: number; + + @OneToOne( + () => BusinessPlan, + businessPlan => businessPlan.budgetPlan + ) + @JoinColumn({ name: 'id' }) + businessPlan!: Relation; + + @Column({ + type: 'integer', + nullable: true + }) + subsidyMeal?: number; + + @Column({ + type: 'integer', + nullable: true + }) + subsidyActivity?: number; + + @Column({ + type: 'integer', + nullable: true + }) + subsidyOperating?: number; + + @Column({ + type: 'integer', + nullable: true + }) + subsidyFacility?: number; + + @Column({ + type: 'integer', + nullable: true + }) + selfMeal?: number; + + @Column({ + type: 'integer', + nullable: true + }) + selfActivity?: number; + + @Column({ + type: 'integer', + nullable: true + }) + selfOperating?: number; + + @Column({ + type: 'integer', + nullable: true + }) + selfFacility?: number; +} \ No newline at end of file diff --git a/src/models/budgetResult.entity.ts b/src/models/budgetResult.entity.ts new file mode 100644 index 0000000..0a6dc13 --- /dev/null +++ b/src/models/budgetResult.entity.ts @@ -0,0 +1,34 @@ + +import { Column, Entity, JoinColumn, ManyToOne, PrimaryColumn } from "typeorm"; +import { Key } from "../enums/key.enum.js"; +import { ResultReport } from "./resultReport.entity.js"; + +@Entity() +export class BudgetResult { + // 예산 상세 결과 + + @PrimaryColumn() + id!: number; + + @ManyToOne( + () => ResultReport, + resultReport => resultReport.budgetResult + ) + @JoinColumn({ name: 'id' }) + resultReport!: ResultReport; + + @Column({ + type: 'integer' + }) + subsidy!: number; + + @Column({ + type: 'integer' + }) + burden!: number; + + @Column({ + type: 'varchar' + }) + key!: Key; +} \ No newline at end of file diff --git a/src/models/business.entity.ts b/src/models/business.entity.ts new file mode 100644 index 0000000..c5f2cd1 --- /dev/null +++ b/src/models/business.entity.ts @@ -0,0 +1,141 @@ +import { Column, Entity, OneToMany, OneToOne, PrimaryGeneratedColumn, Relation } from "typeorm"; +import { BusinessType } from "../enums/businessType.enum.js"; +import { ClubType } from "../enums/clubType.enum.js"; +import { BusinessInformation } from "./businessInformation.entity.js"; +import { BusinessMapping } from "./businessMapping.entity.js"; +import { BusinessPlan } from "./businessPlan.entity.js"; +import { Status } from "./status.entity.js"; + +@Entity() +export class Business { + // 사업계획서 4-1 + + @PrimaryGeneratedColumn() + id!: number; + + @OneToOne( + () => Status, + status => status.buisness + ) + status!: Relation; + + @OneToOne( + () => BusinessInformation, + businessInformation => businessInformation.business + ) + businessInformation!: Relation; + + @OneToMany( + () => BusinessMapping, + businessMapping => businessMapping.business + ) + businessMapping!: Relation[]; + + @OneToOne( + () => BusinessPlan, + businessPlan => businessPlan.business + ) + businessPlan!: Relation; + + @Column({ + type: 'varchar' + }) + businessType!: Relation; + + @Column({ + type: 'varchar' + }) + clubName!: string; + + @Column({ + type: 'boolean', + default: false + }) + isContiguous!: boolean; + + @Column({ + type: 'varchar', + nullable: true, + }) + contiguousLocation?: string; + + @Column({ + type: 'varchar' + }) + businessName!: string; + + @Column({ + type: 'varchar' + }) + businessLocation!: string; + + @Column({ + type: 'integer', + default: 0 + }) + totalBudget!: number; + + @Column({ + type: 'integer', + default: 0 + }) + subsidy!: number; + + @Column({ + type: 'integer', + default: 0, + }) + selfInflicted!: number; + + @Column({ + type: 'varchar', + }) + clubType!: ClubType; + + @Column({ + type: 'integer', + default: 1 + }) + countOfManager!: number; + + @Column({ + type: 'integer', + default: 1 + }) + countOfMember!: number; + + @Column({ + type: 'varchar', + nullable: true + }) + clubAddress?: string; + + @Column({ + type: 'integer', + default: 0 + }) + clubRegisterNumber!: number; + + @Column({ + type: 'boolean', + default: false + }) + isIncludingInfo!: boolean; + + @Column({ + type: 'boolean', + default: false + }) + isIncludingMemberList!: boolean; + + @Column({ + type: 'boolean', + default: false + }) + isIncludingPlan!: boolean; + + @Column({ + type: 'integer', + }) + year!: number; +} \ No newline at end of file diff --git a/src/models/business.ts b/src/models/business.ts deleted file mode 100644 index f18d9fe..0000000 --- a/src/models/business.ts +++ /dev/null @@ -1,101 +0,0 @@ -import { Column, Entity, PrimaryColumn, PrimaryGeneratedColumn } from "typeorm"; -import { businessType } from "../enums/businessType.enum.js"; -import { clubType } from "../enums/clubType.enum.js"; -import { loc } from "../enums/loc.enum.js"; - -@Entity() -export class Business { - @PrimaryGeneratedColumn() - id!: number; - - @Column({ - type: 'varchar' - }) - businessType!: businessType; - - @Column({ - type: 'varchar' - }) - clubName!: string; - - @Column({ - type: 'boolean' - }) - isContiguous!: boolean; - - @Column({ - type: 'varchar', - nullable: true - }) - contiguousLocation?: loc; - - @Column({ - type: 'varchar' - }) - businessName!: string; - - @Column({ - type: 'integer' - }) - totalBudget!: number; - - @Column({ - type: 'integer' - }) - subsidy!: number; - - @Column({ - type: 'integer' - }) - selfInflicted!: number; - - @Column({ - type: 'varchar' - }) - clubType!: clubType; - - @Column({ - type: 'integer' - }) - countOfManager!: number; - - @Column({ - type: 'integer', - default: 0 - }) - countOfMember!: number; - - @Column({ - type: 'varchar', - nullable: true - }) - clubAddress?: string; - - @Column({ - type: 'integer' - }) - clubRegisterNumber!: number; - - @Column({ - type: 'boolean', - default: false - }) - isIncludingInfo!: boolean; - - @Column({ - type: 'boolean', - default: false - }) - isIncludingMemberList!: boolean; - - @Column({ - type: 'boolean', - default: false - }) - isIncludingPlan!: boolean; - - @Column({ - type: 'integer' - }) - year!: number; -} \ No newline at end of file diff --git a/src/models/businessDetail.entity.ts b/src/models/businessDetail.entity.ts new file mode 100644 index 0000000..c0ed0c5 --- /dev/null +++ b/src/models/businessDetail.entity.ts @@ -0,0 +1,37 @@ +import { Column, Entity, JoinColumn, ManyToOne, PrimaryColumn, Relation } from "typeorm"; +import { BusinessPlan } from "./businessPlan.entity.js"; + +@Entity() +export class BusinessDetail { + // 세부 사업 + + @PrimaryColumn({ + type: 'integer' + }) + id!: number; + + @ManyToOne( + () => BusinessPlan, + businessPlan => businessPlan.businessDetail + ) + @JoinColumn({ name: 'id' }) + businessPaln!: Relation; + + @Column({ + type: 'varchar', + nullable: true + }) + name?: string; + + @Column({ + type: 'varchar', + nullable: true + }) + period?: string; + + @Column({ + type: 'text', + nullable: true + }) + reason?: string; +} \ No newline at end of file diff --git a/src/models/businessInformation.entity.ts b/src/models/businessInformation.entity.ts new file mode 100644 index 0000000..5af2df7 --- /dev/null +++ b/src/models/businessInformation.entity.ts @@ -0,0 +1,100 @@ +import { Column, Entity, JoinColumn, OneToMany, OneToOne, PrimaryColumn, Relation } from "typeorm"; +import { Business } from "./business.entity.js"; +import { OperationDetail } from "./operationDetail.entity.js"; +import { RegularyMeeting } from "./regularyMeeting.entity.js"; +import { RunningRule } from "./runningRule.entity.js"; + +@Entity() +export class BusinessInformation { + // 단체소개서 4-2 + + @PrimaryColumn({ + type: 'integer' + }) + id!: number; + + @OneToOne( + () => Business, + business => business.businessInformation + ) + @JoinColumn({ name: 'id' }) + business!: Relation; + + @OneToOne( + () => RegularyMeeting, + regularyMeeting => regularyMeeting.businessInformation + ) + regularyMeeting!: RegularyMeeting; + + @OneToMany( + () => RunningRule, + runningRule => runningRule.businessInformation + ) + runningRule!: RunningRule; + + @OneToMany( + () => OperationDetail, + operationDetail => operationDetail.businessInformation + ) + operationDetail!: OperationDetail; + + @Column({ + type: 'varchar' + }) + clubName!: string; + + @Column({ + type: 'varchar' + }) + leaderName!: string; + + @Column({ + type: 'date' + }) + clubBirth!: Date; + + @Column({ + type: 'integer', + default: 1 + }) + countOfMember!: number; + + @Column({ + type: 'integer', + default: 1 + }) + countOfManager!: number; + + @Column({ + type: 'text', + }) + purpose!: string; + + @Column({ + type: 'text' + }) + mainBusiness!: string; + + @Column({ + type: 'boolean', + default: false + }) + hasSystem!: boolean; + + @Column({ + type: 'boolean', + default: false + }) + hasRunnigRule!: boolean; + + @Column({ + type: 'text' + }) + mainActivity!: string; + + @Column({ + type: 'boolean', + default: false + }) + whetherApplied!: boolean; +} \ No newline at end of file diff --git a/src/models/businessMapping.entity.ts b/src/models/businessMapping.entity.ts new file mode 100644 index 0000000..7975821 --- /dev/null +++ b/src/models/businessMapping.entity.ts @@ -0,0 +1,39 @@ +import { Column, Entity, JoinColumn, ManyToOne, PrimaryColumn, Relation } from "typeorm"; +import { Business } from "./business.entity.js"; +import { Resident } from "./resident.entity.js"; + +@Entity() +export class BusinessMapping { + // 주민참여명부 4-3 + + @PrimaryColumn({ + type: 'integer' + }) + id!: number; + + @ManyToOne( + () => Business, + business => business.businessMapping + ) + @JoinColumn({ name: 'id' }) + business!: Relation; + + @PrimaryColumn({ + type: 'varchar' + }) + phone!: string; + + @ManyToOne( + () => Resident, + resident => resident.phone + ) + @JoinColumn({ name: 'phone' }) + resident!: Resident; + + @Column({ + type: 'varchar', + nullable: true + }) + rule?: string; + +} \ No newline at end of file diff --git a/src/models/businessPlan.entity.ts b/src/models/businessPlan.entity.ts new file mode 100644 index 0000000..dbcfeb5 --- /dev/null +++ b/src/models/businessPlan.entity.ts @@ -0,0 +1,87 @@ +import { Column, Entity, JoinColumn, OneToMany, OneToOne, PrimaryColumn, Relation } from "typeorm"; +import { BudgetDetail } from "./budgetDetail.entity.js"; +import { BudgetPlan } from "./budgetPlan.entity.js"; +import { Business } from "./business.entity.js"; +import { BusinessDetail } from "./businessDetail.entity.js"; +import { LocalResource } from "./localResource.entity.js"; + +@Entity() +export class BusinessPlan { + // 사업계획서 4-5 + + @PrimaryColumn({ + type: 'integer' + }) + id!: number; + + @OneToOne( + () => Business, + business => business.businessPlan + ) + @JoinColumn({ name: 'id' }) + business!: Relation; + + @OneToMany( + () => BusinessDetail, + businessDetail => businessDetail.businessPaln + ) + businessDetail!: Relation[]; + + @OneToMany( + () => LocalResource, + localResource => localResource.businessPlan + ) + localResource!: Relation[]; + + @OneToOne( + () => BudgetPlan, + budgetPlan => budgetPlan.businessPlan + ) + budgetPlan!: Relation; + + @OneToMany( + () => BudgetDetail, + budgetDetail => budgetDetail.businessPlan + ) + budgetDetail!: Relation[]; + + @Column({ + type: 'varchar' + }) + businessName!: string; + + @Column({ + type: 'text' + }) + evaluation!: string; + + @Column({ + type: 'text' + }) + purposeAndBackGround!: string; + + @Column({ + type: 'text' + }) + benefit!: string; + + @Column({ + type: 'varchar' + }) + period!: string; + + @Column({ + type: 'varchar' + }) + location!: string; + + @Column({ + type: 'varchar' + }) + target!: string; + + @Column({ + type: 'text' + }) + method!: string; +} \ No newline at end of file diff --git a/src/models/changeStatus.entity.ts b/src/models/changeStatus.entity.ts new file mode 100644 index 0000000..c53183e --- /dev/null +++ b/src/models/changeStatus.entity.ts @@ -0,0 +1,32 @@ +import { Column, Entity, JoinColumn, ManyToOne, PrimaryColumn, Relation } from "typeorm"; +import { PerformanceResult } from "./performanceResult.entity.js"; + +@Entity() +export class ChangeStatus { + // 사업 변경 현황 + + @PrimaryColumn() + id!: number; + + @Column({ + type: 'date' + }) + appliedDate!: Date; + + @Column({ + type: 'date' + }) + approvalDate!: Date; + + @Column({ + type: 'varchar' + }) + changedContent!: string; + + @ManyToOne( + () => PerformanceResult, + performanceResult => performanceResult.changeStatus + ) + @JoinColumn({ name: 'id' }) + performanceResult!: Relation; +} \ No newline at end of file diff --git a/src/models/dataSource.ts b/src/models/dataSource.ts index 7a7f70e..84121fa 100644 --- a/src/models/dataSource.ts +++ b/src/models/dataSource.ts @@ -1,7 +1,27 @@ import { configDotenv } from "dotenv"; import "reflect-metadata"; import { DataSource } from "typeorm"; -import { Business } from "./business.js"; +import { AchievementStatus } from "./achievementStatus.entity.js"; +import { BudgetDetail } from "./budgetDetail.entity.js"; +import { BudgetPlan } from "./budgetPlan.entity.js"; +import { BudgetResult } from "./budgetResult.entity.js"; +import { Business } from "./business.entity.js"; +import { BusinessDetail } from "./businessDetail.entity.js"; +import { BusinessInformation } from "./businessInformation.entity.js"; +import { BusinessMapping } from "./businessMapping.entity.js"; +import { BusinessPlan } from "./businessPlan.entity.js"; +import { LocalResource } from "./localResource.entity.js"; +import { OperationDetail } from "./operationDetail.entity.js"; +import { PerformanceDetail } from "./performanceDetail.entity.js"; +import { PerformanceResult } from "./performanceResult.entity.js"; +import { PushResult } from "./pushResult.entity.js"; +import { RegularyMeeting } from "./regularyMeeting.entity.js"; +import { Resident } from "./resident.entity.js"; +import { ResultReport } from "./resultReport.entity.js"; +import { RunningRule } from "./runningRule.entity.js"; +import { Status } from "./status.entity.js"; +import { ChangeStatus } from "./changeStatus.entity.js"; +import { UsingResource } from "./usingResource.entity.js"; configDotenv(); @@ -14,7 +34,29 @@ export const AppDataSource = new DataSource({ database: process.env.DB_NAME, synchronize: true, logging: false, - entities: [Business], + entities: [ + AchievementStatus, + BudgetDetail, + BudgetPlan, + BudgetResult, + Business, + BusinessDetail, + BusinessInformation, + BusinessMapping, + BusinessPlan, + PerformanceResult, + LocalResource, + OperationDetail, + PerformanceDetail, + PushResult, + ChangeStatus, + RegularyMeeting, + Resident, + ResultReport, + RunningRule, + Status, + UsingResource, + ], migrations: [], subscribers: [], }); \ No newline at end of file diff --git a/src/models/localResource.entity.ts b/src/models/localResource.entity.ts new file mode 100644 index 0000000..659387d --- /dev/null +++ b/src/models/localResource.entity.ts @@ -0,0 +1,35 @@ +import { Column, Entity, JoinColumn, ManyToOne, PrimaryColumn, Relation } from "typeorm"; +import { BusinessPlan } from "./businessPlan.entity.js"; + +@Entity() +export class LocalResource { + // 지역 자원 연계 및 활용 방안 + + @PrimaryColumn({ + type: 'integer' + }) + id!: number; + + @ManyToOne( + () => BusinessPlan, + businessPlan => businessPlan.localResource + ) + @JoinColumn({ name: 'id' }) + businessPlan!: Relation; + + @Column({ + type: 'varchar', + nullable: true + }) + type?: string; + + @Column({ + type: 'varchar' + }) + cooperation!: string; + + @Column({ + type: 'text' + }) + detail!: string; +} \ No newline at end of file diff --git a/src/models/operationDetail.entity.ts b/src/models/operationDetail.entity.ts new file mode 100644 index 0000000..03857b4 --- /dev/null +++ b/src/models/operationDetail.entity.ts @@ -0,0 +1,40 @@ +import { Column, Entity, JoinColumn, ManyToOne, PrimaryColumn, Relation } from "typeorm"; +import { BusinessInformation } from "./businessInformation.entity.js"; + +@Entity() +export class OperationDetail { + // 운영 계획 + + @PrimaryColumn({ + type: 'integer' + }) + id!: number; + + @ManyToOne( + () => BusinessInformation, + businessInformation => businessInformation.operationDetail + ) + @JoinColumn({ name: 'id' }) + businessInformation!: Relation; + + @Column({ + type: 'varchar' + }) + location!: string; + + @Column({ + type: 'varchar' + }) + period!: string; + + @Column({ + type: 'varchar' + }) + businessName!: string; + + @Column({ + type: 'integer', + default: false + }) + budget!: number; +} \ No newline at end of file diff --git a/src/models/performanceDetail.entity.ts b/src/models/performanceDetail.entity.ts new file mode 100644 index 0000000..f5950e8 --- /dev/null +++ b/src/models/performanceDetail.entity.ts @@ -0,0 +1,54 @@ +import { Column, Entity, JoinColumn, ManyToOne, PrimaryColumn, Relation } from "typeorm"; +import { Key } from "../enums/key.enum.js"; +import { Total } from "../enums/total.enum.js"; +import { PerformanceResult } from "./performanceResult.entity.js"; + +@Entity() +export class PerformanceDetail { + // 추진 성과 상세 + + @PrimaryColumn() + id!: number; + + @ManyToOne( + () => PerformanceResult, + performanceResult => performanceResult.performanceDetail + ) + @JoinColumn({ name: 'id' }) + performanceResult!: Relation; + + @Column({ + type: 'integer', + default: false + }) + meeting!: number; + + @Column({ + type: 'integer', + default: false + }) + education!: number; + + @Column({ + type: 'integer', + default: false + }) + workshop!: number; + + @Column({ + type: 'integer', + default: false + }) + festival!: number; + + @Column({ + type: 'integer', + default: false + }) + etc!: number; + + @Column({ + type: 'varchar' + }) + total!: Total; +} \ No newline at end of file diff --git a/src/models/performanceResult.entity.ts b/src/models/performanceResult.entity.ts new file mode 100644 index 0000000..610b9a0 --- /dev/null +++ b/src/models/performanceResult.entity.ts @@ -0,0 +1,69 @@ +import { Column, Entity, OneToMany, OneToOne, PrimaryColumn, Relation } from "typeorm"; +import { AchievementStatus } from "./achievementStatus.entity.js"; +import { ChangeStatus } from "./changeStatus.entity.js"; +import { PerformanceDetail } from "./performanceDetail.entity.js"; +import { PushResult } from "./pushResult.entity.js"; +import { UsingResource } from "./usingResource.entity.js"; + +@Entity() +export class PerformanceResult { + // 사업 추진 성과 + + @PrimaryColumn() + id!: number; + + @OneToMany( + () => PerformanceDetail, + performanceDetail => performanceDetail.performanceResult + ) + performanceDetail!: Relation[]; + + @OneToMany( + () => ChangeStatus, + changeStatus => changeStatus.performanceResult + ) + changeStatus!: Relation[]; + + @OneToMany( + () => PushResult, + pushResult => pushResult.performanceResult + ) + pushResult!: Relation[]; + + @OneToOne( + () => AchievementStatus, + achievementStatus => achievementStatus.performanceResult + ) + achievementStatus!: Relation; + + @OneToOne( + () => UsingResource, + usingResource => usingResource.performanceResult + ) + usingResource!: Relation; + + @Column({ + type: 'varchar' + }) + businessType!: string; + + @Column({ + type: 'varchar' + }) + businessName!: string; + + @Column({ + type: 'varchar' + }) + clubName!: string; + + @Column({ + type: 'varchar' + }) + period!: string; + + @Column({ + type: 'varchar' + }) + location!: string; +} \ No newline at end of file diff --git a/src/models/pushResult.entity.ts b/src/models/pushResult.entity.ts new file mode 100644 index 0000000..5165367 --- /dev/null +++ b/src/models/pushResult.entity.ts @@ -0,0 +1,37 @@ +import { Column, Entity, JoinColumn, ManyToOne, PrimaryColumn, Relation } from "typeorm"; +import { PerformanceResult } from "./performanceResult.entity.js"; + +@Entity() +export class PushResult { + // 사업 추진 결과 + + @PrimaryColumn() + id!: number; + + @ManyToOne( + () => PerformanceResult, + performanceResult => performanceResult.pushResult + ) + @JoinColumn({ name: 'id' }) + performanceResult!: Relation; + + @Column({ + type: 'varchar' + }) + businessName!: string; + + @Column({ + type: 'varchar' + }) + businessResult!: string; + + @Column({ + type: 'text' + }) + method!: string; + + @Column({ + type: 'text' + }) + evaluation!: string; +} \ No newline at end of file diff --git a/src/models/regularyMeeting.entity.ts b/src/models/regularyMeeting.entity.ts new file mode 100644 index 0000000..2fac18c --- /dev/null +++ b/src/models/regularyMeeting.entity.ts @@ -0,0 +1,35 @@ +import { Column, Entity, JoinColumn, OneToOne, PrimaryColumn, Relation } from "typeorm"; +import { BusinessInformation } from "./businessInformation.entity.js"; + +@Entity() +export class RegularyMeeting { + // 정기 회의 + + @PrimaryColumn({ + type: 'integer' + }) + id!: number; + + @OneToOne( + () => BusinessInformation, + businessInformation => businessInformation.regularyMeeting + ) + @JoinColumn({ name: 'id' }) + businessInformation!: Relation; + + @Column({ + type: 'varchar' + }) + type!: string; + + @Column({ + type: 'varchar' + }) + frequency!: string; + + @Column({ + type: 'integer', + default: false + }) + participants!: number; +} \ No newline at end of file diff --git a/src/models/resident.entity.ts b/src/models/resident.entity.ts new file mode 100644 index 0000000..50b6a63 --- /dev/null +++ b/src/models/resident.entity.ts @@ -0,0 +1,39 @@ +import { Column, Entity, OneToMany, PrimaryColumn, Relation } from "typeorm"; +import { Sex } from "../enums/sex.enum.js"; +import { BusinessMapping } from "./businessMapping.entity.js"; + +@Entity() +export class Resident { + // 주민 + + @PrimaryColumn({ + type: 'varchar' + }) + phone!: string; + + @OneToMany( + () => BusinessMapping, + businessMapping => businessMapping.resident + ) + businessMappping!: Relation; + + @Column({ + type: 'varchar' + }) + name!: string; + + @Column({ + type: 'varchar' + }) + sex!: Sex; + + @Column({ + type: 'date' + }) + birth!: Date; + + @Column({ + type: 'varchar' + }) + location!: string; +} \ No newline at end of file diff --git a/src/models/resultReport.entity.ts b/src/models/resultReport.entity.ts new file mode 100644 index 0000000..f5df284 --- /dev/null +++ b/src/models/resultReport.entity.ts @@ -0,0 +1,47 @@ +import { Column, Entity, OneToMany, PrimaryGeneratedColumn, Relation } from "typeorm"; +import { BudgetResult } from "./budgetResult.entity.js"; + +@Entity() +export class ResultReport { + // 결과보고서 + + @PrimaryGeneratedColumn() + id!: number; + + @OneToMany( + () => BudgetResult, + budgetResult => budgetResult.resultReport + ) + budgetResult!: Relation[]; + + + @Column({ + type: 'varchar' + }) + clubName!: string; + + @Column({ + type: 'varchar' + }) + businessName!: string; + + @Column({ + type: 'date' + }) + date!: Date; + + @Column({ + type: 'varchar' + }) + leader!: string; + + @Column({ + type: 'varchar' + }) + writer!: string; + + @Column({ + type: 'varchar' + }) + phone!: string; +} \ No newline at end of file diff --git a/src/models/runningRule.entity.ts b/src/models/runningRule.entity.ts new file mode 100644 index 0000000..e0a28f8 --- /dev/null +++ b/src/models/runningRule.entity.ts @@ -0,0 +1,24 @@ +import { Column, Entity, JoinColumn, ManyToOne, PrimaryColumn, Relation } from "typeorm"; +import { BusinessInformation } from "./businessInformation.entity.js"; + +@Entity() +export class RunningRule { + // 운영 규정 + + @PrimaryColumn({ + type: 'integer' + }) + id!: number; + + @ManyToOne( + () => BusinessInformation, + businessInformation => businessInformation.runningRule + ) + @JoinColumn({ name: 'id' }) + businessInformation!: Relation; + + @Column({ + type: 'text' + }) + rule!: string; +} \ No newline at end of file diff --git a/src/models/status.entity.ts b/src/models/status.entity.ts new file mode 100644 index 0000000..8a9a041 --- /dev/null +++ b/src/models/status.entity.ts @@ -0,0 +1,30 @@ +import { Column, Entity, JoinColumn, OneToOne, PrimaryColumn, Relation } from "typeorm"; +import { Type } from "../enums/type.enum.js"; +import { Business } from "./business.entity.js"; + +@Entity() +export class Status { + // 상태 + + @PrimaryColumn({ + type: 'integer' + }) + id!: number; + + @OneToOne( + () => Business, + business => business.status + ) + @JoinColumn({ name: 'id' }) + buisness!: Relation; + + @Column({ + type: 'integer' + }) + year!: number; + + @Column({ + type: 'varchar' + }) + status!: Type; +} \ No newline at end of file diff --git a/src/models/usingResource.entity.ts b/src/models/usingResource.entity.ts new file mode 100644 index 0000000..eddc910 --- /dev/null +++ b/src/models/usingResource.entity.ts @@ -0,0 +1,37 @@ +import { Column, Entity, JoinColumn, OneToOne, PrimaryColumn, Relation } from "typeorm"; +import { PerformanceResult } from "./performanceResult.entity.js"; + +@Entity() +export class UsingResource { + // 지역 자원 활용 및 연계 + + @PrimaryColumn() + id!: number; + + @OneToOne( + () => PerformanceResult, + performanceResult => performanceResult.usingResource + ) + @JoinColumn({ name: 'id' }) + performanceResult!: Relation; + + @Column({ + type: 'text' + }) + evaluation!: string; + + @Column({ + type: 'text' + }) + changedAfter!: string; + + @Column({ + type: 'text' + }) + difficultOrSuggest!: string; + + @Column({ + type: 'text' + }) + nextPlan!: string; +} \ No newline at end of file diff --git a/tsconfig.json b/tsconfig.json index 4dee374..eb7e72c 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -5,7 +5,7 @@ "compilerOptions": { "preserveValueImports": false, "module": "Node16", - "target": "ES6", + "target": "es2017", "noImplicitAny": false, "sourceMap": true, "outDir": "scripts/",