๊ณตํต ์ต์
๋ชจ๋ ํ๋ ํ์ ์ ๊ณตํต์ผ๋ก ์ ์ฉ๋๋ ์ต์ ์ ๋๋ค.Generated Column
๊ณ์ฐ๋ ๊ฐ์ ์๋์ผ๋ก ์์ฑํ๋ ์ปฌ๋ผ์ ๋๋ค.type:STORED|VIRTUALSTORED: ๋ฌผ๋ฆฌ์ ์ผ๋ก ์ ์ฅ๋จ (์ธ๋ฑ์ค ์์ฑ ๊ฐ๋ฅ)VIRTUAL: ์กฐํ ์์๋ง ๊ณ์ฐ๋จ (๋ฉ๋ชจ๋ฆฌ ์ ์ฝ)
expression: SQL ํํ์
์ซ์ ํ์
integer / integer[]
32๋นํธ ์ ์ ํ์ ์ ๋๋ค.- ๋จ์ผ ๊ฐ
- ๋ฐฐ์ด
- PostgreSQL:
integer - TypeScript:
number - JSON:
number
bigInteger / bigInteger[]
64๋นํธ ์ ์ ํ์ ์ ๋๋ค.- ๋จ์ผ ๊ฐ
- ๋ฐฐ์ด
- PostgreSQL:
bigint - TypeScript:
bigint - JSON:
bigint(๋ฌธ์์ด๋ก ์ง๋ ฌํ)
number / number[]
๋ถ๋์์์ ๋๋ ๊ณ ์ ์์์ ์ซ์ ํ์ ์ ๋๋ค.- ๋จ์ผ ๊ฐ
- ๋ฐฐ์ด
- PostgreSQL:
numeric(10, 2)(๊ธฐ๋ณธ๊ฐ) - TypeScript:
number - JSON:
number
precision: ์ ์ฒด ์๋ฆฟ์ (๊ธฐ๋ณธ๊ฐ: ์์ = ๋ฌด์ ํ)scale: ์์์ ์๋ฆฟ์ (๊ธฐ๋ณธ๊ฐ: 0)numberType:numeric|real|double precision(๊ธฐ๋ณธ๊ฐ:numeric)
numeric / numeric[]
๊ณ ์ ๋ฐ๋ ์ซ์ ํ์ ์ ๋๋ค. TypeScript์์ ๋ฌธ์์ด๋ก ์ฒ๋ฆฌ๋ฉ๋๋ค.- ๋จ์ผ ๊ฐ
- ๋ฐฐ์ด
- PostgreSQL:
numeric(20, 10) - TypeScript:
stringโ ๏ธ - JSON:
string
precision: ์ ์ฒด ์๋ฆฟ์scale: ์์์ ์๋ฆฟ์
๋ฌธ์์ด ํ์
string / string[]
๊ฐ๋ณ ๊ธธ์ด ๋ฌธ์์ด ํ์ ์ ๋๋ค.- ๋จ์ผ ๊ฐ
- ๋ฐฐ์ด
- PostgreSQL:
varchar(255)(length ์ง์ ์) ๋๋text - TypeScript:
string - JSON:
string
length: ์ต๋ ๊ธธ์ด (์๋ต ์textํ์ ์ฌ์ฉ)zodFormat: Zod 4 String Format validation (์๋ ์ฐธ์กฐ)
zodFormat ์ต์
zodFormat ์ต์
์ ์ฌ์ฉํ๋ฉด BaseSchema ์์ฑ ์ Zod์ string format validation์ด ์๋์ผ๋ก ์ ์ฉ๋ฉ๋๋ค.
์ฌ์ฉ ์์:
enum / enum[]
์ด๊ฑฐํ ํ์ ์ ๋๋ค. Entity์enums์ ์ ์๋ ๊ฐ๋ง ํ์ฉ๋ฉ๋๋ค.
- ๋จ์ผ ๊ฐ
- ๋ฐฐ์ด
- PostgreSQL:
text - TypeScript:
"admin" | "normal"(Enum ํค์ Union) - JSON:
string
id: Enum ํ์ ID (Entity์enums์ ์ ์ ํ์)length: ๋ฌธ์์ด ์ต๋ ๊ธธ์ด (์ ํ ์ฌํญ)
๋ ์์๋ณด๊ธฐ - Enums - Enum ์์ธ ๊ฐ์ด๋
๋ ผ๋ฆฌ ํ์
boolean / boolean[]
์ฐธ/๊ฑฐ์ง ๊ฐ์ ์ ์ฅํ๋ ํ์ ์ ๋๋ค.- ๋จ์ผ ๊ฐ
- ๋ฐฐ์ด
- PostgreSQL:
boolean - TypeScript:
boolean - JSON:
boolean
๋ ์ง/์๊ฐ ํ์
date / date[]
๋ ์ง์ ์๊ฐ์ ์ ์ฅํ๋ ํ์ ์ ๋๋ค.- ๋จ์ผ ๊ฐ
- ๋ฐฐ์ด
- PostgreSQL:
timestamptz(ํ์์กด ํฌํจ) - TypeScript:
Date - JSON:
string(ISO 8601 ํ์)
UUID ํ์
uuid / uuid[]
๋ฒ์ฉ ๊ณ ์ ์๋ณ์(UUID) ํ์ ์ ๋๋ค.- ๋จ์ผ ๊ฐ
- ๋ฐฐ์ด
- PostgreSQL:
uuid - TypeScript:
string - JSON:
string
UUID ์์ฑ: PostgreSQL์
gen_random_uuid() ํจ์๋ฅผ dbDefault๋ก ์ฌ์ฉํ๋ฉด ์๋ ์์ฑ๋ฉ๋๋ค.๊ตฌ์กฐํ๋ ๋ฐ์ดํฐ ํ์
json
JSON ํ์์ ๊ตฌ์กฐํ๋ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ํ์ ์ ๋๋ค.- PostgreSQL:
json - TypeScript: ์ฌ์ฉ์ ์ ์ ํ์
(
ProductMetadata) - JSON:
any
id: TypeScript ํ์ ID (.types.ts์์ ์ ์)
virtual
๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ฅ๋์ง ์๋ ๊ฐ์ ํ๋์ ๋๋ค.- PostgreSQL: ์ ์ฅ๋์ง ์์
- TypeScript: ์ฌ์ฉ์ ์ ์ ํ์
(๋๋
string,number๋ฑ) - JSON: ํฌํจ๋จ (๊ณ์ฐ ํ)
id: TypeScript ํ์ IDvirtualType:code|query(๊ธฐ๋ณธ๊ฐ:code)code: TypeScript ์ฝ๋๋ก ๊ณ์ฐquery: SQL appendSelect๋ก ๊ณ์ฐ
- code
- query
Model์์ TypeScript ์ฝ๋๋ก ๊ณ์ฐํฉ๋๋ค.์ฅ์ : ๋ณต์กํ ๋ก์ง ๊ตฌํ ๊ฐ๋ฅ, ์ธ๋ถ API ํธ์ถ ๊ฐ๋ฅ
๋จ์ : ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ ๋ฒจ ํํฐ๋ง/์ ๋ ฌ ๋ถ๊ฐ
Vector ํ์
vector / vector[]
๋ฒกํฐ ์๋ฒ ๋ฉ์ ์ ์ฅํ๋ ํ์ ์ ๋๋ค. pgvector ํ์ฅ์ด ํ์ํฉ๋๋ค.- ๋จ์ผ ๊ฐ
- ๋ฐฐ์ด
- PostgreSQL:
vector(1536)(pgvector ํ์ฅ) - TypeScript:
number[] - JSON:
number[]
dimensions: ๋ฒกํฐ ์ฐจ์ (ํ์, ์: 1536)
๋ ์์๋ณด๊ธฐ - Vector Search - Vector ๊ฒ์ ์์ธ
๊ฐ์ด๋ - pgvector - PostgreSQL vector ํ์ฅ
tsvector
PostgreSQL ์ ๋ฌธ ๊ฒ์(Full-Text Search)์ ์ํ ํ์ ์ ๋๋ค.- PostgreSQL:
tsvector - TypeScript:
string - JSON:
string
์ ๋ฌธ ๊ฒ์: ์์ฐ์ด ํ
์คํธ์ ํค์๋ ๊ฒ์์ ์ต์ ํ๋ ํ์
์
๋๋ค. ํํ์ ๋ถ์, ์ด๊ฐ ์ถ์ถ ๋ฑ์
์ง์ํฉ๋๋ค.
Relation ํ์
๋ค๋ฅธ Entity์์ ๊ด๊ณ๋ฅผ ์ ์ํ๋ ํ์ ์ ๋๋ค.BelongsToOne: N:1 ๊ด๊ณOneToOne: 1:1 ๊ด๊ณHasMany: 1:N ๊ด๊ณManyToMany: N:M ๊ด๊ณ
๋ ์์๋ณด๊ธฐ - Relations - Relation ์์ธ ๊ฐ์ด๋
ํ์ ์ ํ ๊ฐ์ด๋
์ซ์ ์ ์ฅ
๋ฌธ์์ด ์ ์ฅ
๋ ์ง/์๊ฐ ์ ์ฅ
๋ณต์กํ ๋ฐ์ดํฐ
๋ค์ ๋จ๊ณ
Relations
Entity ๊ฐ ๊ด๊ณ ์ ์ํ๊ธฐ
Enums
Enum ํ์
์ฌ์ฉํ๊ธฐ
Indexes
์ธ๋ฑ์ค๋ก ๊ฒ์ ์ฑ๋ฅ ํฅ์ํ๊ธฐ
Vector Search
Vector ๊ฒ์ ์ค์ ํ๊ธฐ