Sonamu UI ์ ์ํ๊ธฐ
์๋ฒ ์คํ
UI ์ ์
API ์๋ฒ๊ฐ ์คํ๋๋ฉด ์๋์ผ๋ก Sonamu UI๋ ํจ๊ป ์ ๊ณต๋ฉ๋๋ค:Sonamu UI๋ ๋ณ๋์ ํฌํธ ์์ด API ์๋ฒ์
/sonamu-ui ๊ฒฝ๋ก์์ ์ ๊ณต๋ฉ๋๋ค.
์ฃผ์ ํญ ๊ตฌ์ฑ
Sonamu UI๋ 4๊ฐ์ ์ฃผ์ ํญ์ผ๋ก ๊ตฌ์ฑ๋ฉ๋๋ค:- Entities
- Migrations
- Scaffolding
- Fixture
Entity ์ ์์ ๊ด๋ฆฌ
- Entity ์์ฑ, ์์ , ์ญ์
- Props, Indexes, Subsets, Enums ์ค์
Entity ์์ฑํ๊ธฐ
1. Entity ๋ชฉ๋ก ํ์ด์ง
Entities ํญ์ ํด๋ฆญํ๋ฉด ํ๋ก์ ํธ์ ๋ชจ๋ Entity ๋ชฉ๋ก์ด ํ์๋ฉ๋๋ค.
- Entity ID์ Title
- ํ ์ด๋ธ๋ช
- Props ๊ฐ์
- Relation ๊ฐ์
2. ์ Entity ์์ฑ
๊ธฐ๋ณธ ์ ๋ณด ์ ๋ ฅ
Entity ์์ฑ ํผ์์ ๋ค์ ์ ๋ณด๋ฅผ ์
๋ ฅํฉ๋๋ค:
- Entity ID: PascalCase (์:
User,BlogPost) - Table Name: snake_case (์:
users,blog_posts) - Title: ํ๊ธ ๋๋ ํ์๋ช (์: โ์ฌ์ฉ์โ, โ๋ธ๋ก๊ทธ ๊ธโ)
- Parent ID: ์ ํ ์ฌํญ - ๋ค๋ฅธ Entity๋ฅผ ์์ํ ๋ ์ฌ์ฉ

Entity ํธ์งํ๊ธฐ
Entity๋ฅผ ํด๋ฆญํ๋ฉด ์์ธ ํธ์ง ํ์ด์ง๊ฐ ์ด๋ฆฝ๋๋ค. 4๊ฐ์ ์ํธ๋ก ๊ตฌ์ฑ๋ฉ๋๋ค:Props ์ํธ
Entity์ ์์ฑ(์ปฌ๋ผ)์ ๊ด๋ฆฌํ๋ ๋ฉ์ธ ์ํธ์ ๋๋ค.
Props ์ถ๊ฐํ๊ธฐ
Add Property ๋ฒํผ ํด๋ฆญ
์ฐ์ธก ์๋จ์ โAdd Propertyโ ๋ฒํผ ํด๋ฆญ ๋๋ ๋จ์ถํค
Ctrl+Cmd+Shift+N ์ฌ์ฉ์์ฑ ์ ๋ณด ์ ๋ ฅ
๊ธฐ๋ณธ ํ๋:
name: ์์ฑ๋ช (snake_case)type: ๋ฐ์ดํฐ ํ์ (๋๋กญ๋ค์ด์์ ์ ํ)desc: ์ค๋ช (์ ํ ์ฌํญ)nullable: NULL ํ์ฉ ์ฌ๋ถ (์ฒดํฌ๋ฐ์ค)dbDefault: ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ธฐ๋ณธ๊ฐ
string / string[]
string / string[]
length: ๋ฌธ์์ด ๊ธธ์ด (๊ธฐ๋ณธ๊ฐ: TEXT)- ์:
length: 255โVARCHAR(255)
number / number[]
number / number[]
precision: ์ ์ฒด ์๋ฆฟ์scale: ์์์ ์๋ฆฟ์numberType:real|double precision|numeric(๊ธฐ๋ณธ๊ฐ: numeric)- ์:
precision: 10, scale: 2โNUMERIC(10, 2)
numeric / numeric[]
numeric / numeric[]
precision: ์ ์ฒด ์๋ฆฟ์scale: ์์์ ์๋ฆฟ์- ์ฃผ์: TypeScript์์
stringํ์ ์ผ๋ก ์ฒ๋ฆฌ๋จ (์ ๋ฐ๋ ์ ์ง)
enum / enum[]
enum / enum[]
id: Enum ํ์ ID (์:UserRole)- Enum์ ๋ณ๋์ Enums ์น์ ์์ ์ ์
json
json
id: JSON ์คํค๋ง ํ์ ID- TypeScript ํ์
์
{entity}.types.ts์์ ์ ์
vector / vector[]
vector / vector[]
dimensions: ๋ฒกํฐ ์ฐจ์ (์: 1536)- pgvector ํ์ฅ ํ์
virtual
virtual
id: Virtual ํ์ IDvirtualType:code|querycode: TypeScript ์ฝ๋๋ก ๊ณ์ฐ (๊ธฐ๋ณธ๊ฐ)query: SQL ์ฟผ๋ฆฌ๋ก ๊ณ์ฐ
- ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ฅ๋์ง ์๋ ๊ณ์ฐ๋ ํ๋
relation
relation
- Relation ํ์ ์ ํ ๋ฐ ์ค์
- ์์ธํ ๋ด์ฉ์ Relations ์ฐธ์กฐ
Props ์์ ๋ฐ ์ญ์
- ์์
- ์ญ์
- ์์ ๋ณ๊ฒฝ
- Props ๋ชฉ๋ก์์ ์์ ํ ํ์ ๋๋ธํด๋ฆญ ๋๋
Enterํค - ๋๋ ํ ์ ํ ํ ์ฐ์ธก์ โEditโ ๋ฒํผ ํด๋ฆญ
- ํผ์์ ๊ฐ ์์ ํ ์ ์ฅ
Indexes ์ํธ
๋ฐ์ดํฐ๋ฒ ์ด์ค ์ธ๋ฑ์ค๋ฅผ ๊ด๋ฆฌํฉ๋๋ค.
Index ์ถ๊ฐํ๊ธฐ
Index ์ค์
Index ์ต์
:
type: ์ธ๋ฑ์ค ํ์index: ์ผ๋ฐ ์ธ๋ฑ์คunique: ์ ๋ํฌ ์ธ๋ฑ์ค (์ค๋ณต ๋ฐฉ์ง)hnsw: Vector HNSW ์ธ๋ฑ์คivfflat: Vector IVFFlat ์ธ๋ฑ์ค
name: ์ธ๋ฑ์ค๋ช (์๋ ์์ฑ ๊ฐ๋ฅ)columns: ์ธ๋ฑ์ค์ ํฌํจํ ์ปฌ๋ผ ์ ํ- ๋ค์ค ์ปฌ๋ผ ์ ํ ๊ฐ๋ฅ
- ์ปฌ๋ผ ์์ ์ค์ (๋ณตํฉ ์ธ๋ฑ์ค)
using: ์ธ๋ฑ์ค ๋ฐฉ๋ฒ (์ ํ ์ฌํญ)btree(๊ธฐ๋ณธ๊ฐ)hashgingist
vectorOps: ๊ฑฐ๋ฆฌ ์ฐ์ฐ์vector_cosine_ops: ์ฝ์ฌ์ธ ๊ฑฐ๋ฆฌ (๊ถ์ฅ)vector_ip_ops: ๋ด์ ๊ฑฐ๋ฆฌvector_l2_ops: ์ ํด๋ฆฌ๋ ๊ฑฐ๋ฆฌ
m: HNSW ๊ทธ๋ํ ์ฐ๊ฒฐ ์ (๊ธฐ๋ณธ๊ฐ: 16)efConstruction: HNSW ๊ตฌ์ฑ ํ์ง (๊ธฐ๋ณธ๊ฐ: 64)lists: IVFFlat ํด๋ฌ์คํฐ ์ (๊ธฐ๋ณธ๊ฐ: 100)
Subsets ์ํธ
API ์๋ต์ ์ํ ํ๋ ์กฐํฉ์ ์ ์ํฉ๋๋ค.
Subset ํค ์ถ๊ฐ
ํ๋ ์ ํ
- ์ผ๋ฐ ํ๋
- Relation ํ๋
- Internal ํ๋
- ์ฒดํฌ๋ฐ์ค๋ฅผ ํด๋ฆญํ์ฌ ํ๋ ํฌํจ/์ ์ธ
- ์ฌ๋ฌ subset์์ ๋์ผ ํ๋ ์ ํ ๊ฐ๋ฅ
Enums ์น์
Enum ํ์ ์ ํค์ ๋ ์ด๋ธ์ ์ ์ํฉ๋๋ค.
Enum ์ถ๊ฐ
Enum ๊ฐ ์ถ๊ฐ
๊ฐ Enum์ ๋ณ๋์ ํญ์ผ๋ก ํ์๋๋ฉฐ, ํค-๋ ์ด๋ธ ์์ผ๋ก ๊ตฌ์ฑ๋ฉ๋๋ค.- โAdd Rowโ ๋ฒํผ ํด๋ฆญ
- ๋๋ Enum ํญ์์
Ctrl+Cmd+Shift+N - Key์ Label ์
๋ ฅ
- Key: ์๋ฌธ ์๋ฌธ์, ์ซ์, ์ธ๋์ค์ฝ์ด๋ง ํ์ฉ
- Label: ํ๊ธ ๋๋ ํ์์ฉ ํ ์คํธ
ํค๋ณด๋ ๋จ์ถํค
Sonamu UI๋ ํจ์จ์ ์ธ ์์ ์ ์ํ ๋ค์ํ ๋จ์ถํค๋ฅผ ์ ๊ณตํฉ๋๋ค.์ ์ญ ๋จ์ถํค
| ๋จ์ถํค | ๊ธฐ๋ฅ |
|---|---|
Cmd+S | ํ์ฌ Entity ์ ์ฅ |
Cmd+K | ๊ฒ์ ๋ชจ๋ ์ง์ |
Tab | ๋ค์ ์ํธ๋ก ์ด๋ |
Shift+Tab | ์ด์ ์ํธ๋ก ์ด๋ |
Esc | ๋ค์ด์ผ๋ก๊ทธ ๋ซ๊ธฐ / ์ ํ ํด์ |
Props/Indexes ์ํธ
| ๋จ์ถํค | ๊ธฐ๋ฅ |
|---|---|
Ctrl+Cmd+Shift+N | ์ ํญ๋ชฉ ์ถ๊ฐ |
Enter | ์ ํํ ํญ๋ชฉ ์์ |
Cmd+Backspace | ์ ํํ ํญ๋ชฉ ์ญ์ |
โ โ | ํญ๋ชฉ ์ ํ ์ด๋ |
Cmd+โ Cmd+โ | ํญ๋ชฉ ์์ ๋ณ๊ฒฝ |
๊ฒ์ ๋ชจ๋
| ๋จ์ถํค | ๊ธฐ๋ฅ |
|---|---|
Cmd+K | ๊ฒ์ ์์ |
| ํ์ดํ | ์ผ์นํ๋ ํญ๋ชฉ์ผ๋ก ์๋ ์ด๋ |
Enter | ๊ฒ์ ์๋ฃ |
Esc | ๊ฒ์ ์ทจ์ |
Entity ์ญ์ ํ๊ธฐ
์ญ์ ์ ์ํฅ:
{entity}.entity.jsonํ์ผ ์ญ์ - ๊ด๋ จ๋ Model, Types ํ์ผ์ ์๋์ผ๋ก ์ญ์ ํ์
- ๋ฐ์ดํฐ๋ฒ ์ด์ค ํ ์ด๋ธ์ ๋ง์ด๊ทธ๋ ์ด์ ์ ํตํด ๋ณ๋๋ก ์ญ์
ํ์ผ ๊ตฌ์กฐ
Entity๋ฅผ ์ ์ฅํ๋ฉด ๋ค์ ํ์ผ๋ค์ด ์์ฑ๋ฉ๋๋ค:ํ์ด๋ผ์ดํธ๋ ํ์ผ๋ค์ Sonamu๊ฐ ์๋์ผ๋ก ์์ฑํ๋ ํ์ผ์
๋๋ค.
์ค์๊ฐ ์ ํจ์ฑ ๊ฒ์ฌ
Sonamu UI๋ ์ ๋ ฅ ์ฆ์ ์ ํจ์ฑ์ ๊ฒ์ฌํฉ๋๋ค:- Props
- Indexes
- Subsets
- Enums
- ์์ฝ์ด ์ฒดํฌ (JavaScript/TypeScript ํค์๋)
- ํ์ ๋ณ ํ์ ์ต์ ์ฒดํฌ
- ์ค๋ณต ์ด๋ฆ ์ฒดํฌ

์๋ ์์ฑ ๊ธฐ๋ฅ
Sonamu UI๋ ์ปจํ ์คํธ์ ๋ง๋ ์๋ ์์ฑ์ ์ ๊ณตํฉ๋๋ค:Entity ID ์
๋ ฅ ์
Entity ID ์ ๋ ฅ ์
- ๊ธฐ์กด Entity ๋ชฉ๋ก ์ ์
- ํ์ดํ์ ๋ฐ๋ผ ํํฐ๋ง
Relation ์ค์ ์
Relation ์ค์ ์
withํ๋์์ ์ฌ์ฉ ๊ฐ๋ฅํ Entity ๋ชฉ๋ก ์๋ ์์ฑ
Type ID ์
๋ ฅ ์
Type ID ์ ๋ ฅ ์
- JSON, Virtual ํ์
์
idํ๋์์ ํ์ ์ ์
Enum ID ์
๋ ฅ ์
Enum ID ์ ๋ ฅ ์
- ์ ์๋ Enum ๋ชฉ๋ก ์ ์
- ์ Enum ์์ฑ ์ต์ ์ ๊ณต