@kiyeonjeon21/datacontext 0.3.2 → 0.3.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/adapters/sqlite.d.ts.map +1 -1
- package/dist/adapters/sqlite.js +13 -0
- package/dist/adapters/sqlite.js.map +1 -1
- package/dist/cli/index.js +58 -14
- package/dist/cli/index.js.map +1 -1
- package/docs/KNOWLEDGE_TYPES.md +261 -0
- package/package.json +1 -1
- package/scripts/create-sqlite-testdb.sh +75 -0
- package/scripts/test-databases.sh +324 -0
- package/sqlite:./test-sqlite.db +0 -0
- package/src/adapters/sqlite.ts +16 -0
- package/src/cli/index.ts +57 -16
- package/test-sqlite.db +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sqlite.d.ts","sourceRoot":"","sources":["../../src/adapters/sqlite.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;
|
|
1
|
+
{"version":3,"file":"sqlite.d.ts","sourceRoot":"","sources":["../../src/adapters/sqlite.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAKH,OAAO,KAAK,EAAE,eAAe,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAChF,OAAO,KAAK,EAAE,UAAU,EAAE,SAAS,EAAyC,MAAM,oBAAoB,CAAC;AAGvG,qBAAa,aAAc,YAAW,eAAe;IACnD,QAAQ,CAAC,IAAI,YAAY;IAEzB,OAAO,CAAC,EAAE,CAAkC;IAC5C,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,YAAY,CAAS;gBAEjB,MAAM,EAAE,gBAAgB;IAMpC,OAAO,CAAC,aAAa;IAOf,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IA4BxB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAOjC,WAAW,IAAI,OAAO;IAIhB,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IA0CxC,SAAS,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAyB/C,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC;IA6CvE,UAAU,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAepD,eAAe,IAAI,MAAM;YAQX,UAAU;YAsDV,UAAU;YAiCV,cAAc;CAsC7B;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,aAAa,CAEnE;AAED;;GAEG;AACH,wBAAgB,6BAA6B,CAAC,MAAM,EAAE,gBAAgB,GAAG,aAAa,CAErF"}
|
package/dist/adapters/sqlite.js
CHANGED
|
@@ -18,6 +18,8 @@ exports.SQLiteAdapter = void 0;
|
|
|
18
18
|
exports.createSQLiteAdapter = createSQLiteAdapter;
|
|
19
19
|
exports.createSQLiteAdapterFromConfig = createSQLiteAdapterFromConfig;
|
|
20
20
|
const better_sqlite3_1 = __importDefault(require("better-sqlite3"));
|
|
21
|
+
const fs_1 = require("fs");
|
|
22
|
+
const path_1 = require("path");
|
|
21
23
|
const schema_hash_js_1 = require("../knowledge/schema-hash.js");
|
|
22
24
|
class SQLiteAdapter {
|
|
23
25
|
name = 'sqlite';
|
|
@@ -41,6 +43,17 @@ class SQLiteAdapter {
|
|
|
41
43
|
return;
|
|
42
44
|
}
|
|
43
45
|
try {
|
|
46
|
+
// Resolve relative paths to absolute
|
|
47
|
+
let resolvedPath = this.filePath;
|
|
48
|
+
if (this.filePath !== ':memory:') {
|
|
49
|
+
resolvedPath = (0, path_1.resolve)(process.cwd(), this.filePath);
|
|
50
|
+
// Ensure parent directory exists
|
|
51
|
+
const dir = (0, path_1.dirname)(resolvedPath);
|
|
52
|
+
if (!(0, fs_1.existsSync)(dir)) {
|
|
53
|
+
(0, fs_1.mkdirSync)(dir, { recursive: true });
|
|
54
|
+
}
|
|
55
|
+
this.filePath = resolvedPath;
|
|
56
|
+
}
|
|
44
57
|
this.db = new better_sqlite3_1.default(this.filePath, { readonly: false });
|
|
45
58
|
// Enable foreign keys
|
|
46
59
|
this.db.pragma('foreign_keys = ON');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sqlite.js","sourceRoot":"","sources":["../../src/adapters/sqlite.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;GAUG;;;;;;
|
|
1
|
+
{"version":3,"file":"sqlite.js","sourceRoot":"","sources":["../../src/adapters/sqlite.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/index.js
CHANGED
|
@@ -32,9 +32,15 @@ function createAdapter(connectionString) {
|
|
|
32
32
|
else if (url.startsWith('mysql://') || url.startsWith('mariadb://')) {
|
|
33
33
|
return (0, mysql_js_1.createMySQLAdapter)(connectionString);
|
|
34
34
|
}
|
|
35
|
-
else if (url.startsWith('sqlite://') || url.endsWith('.sqlite') || url.endsWith('.sqlite3') || url.endsWith('.db') || url === ':memory:') {
|
|
36
|
-
// SQLite: sqlite://path
|
|
37
|
-
|
|
35
|
+
else if (url.startsWith('sqlite://') || url.startsWith('sqlite:') || url.endsWith('.sqlite') || url.endsWith('.sqlite3') || url.endsWith('.db') || url === ':memory:') {
|
|
36
|
+
// SQLite: sqlite://path or sqlite:path or ./mydb.sqlite or :memory:
|
|
37
|
+
let filePath = connectionString;
|
|
38
|
+
if (url.startsWith('sqlite://')) {
|
|
39
|
+
filePath = connectionString.replace(/^sqlite:\/\//i, '');
|
|
40
|
+
}
|
|
41
|
+
else if (url.startsWith('sqlite:')) {
|
|
42
|
+
filePath = connectionString.replace(/^sqlite:/i, '');
|
|
43
|
+
}
|
|
38
44
|
return (0, sqlite_js_1.createSQLiteAdapter)(filePath);
|
|
39
45
|
}
|
|
40
46
|
else {
|
|
@@ -61,17 +67,35 @@ program
|
|
|
61
67
|
.option('--allowed-tables <tables...>', 'Only allow access to these tables')
|
|
62
68
|
.action(async (connectionString, options) => {
|
|
63
69
|
try {
|
|
64
|
-
// Parse connection string
|
|
65
|
-
const config = (0, base_js_1.parseConnectionString)(connectionString);
|
|
66
70
|
// Create adapter (auto-detect database type)
|
|
67
71
|
const adapter = createAdapter(connectionString);
|
|
68
72
|
await adapter.connect();
|
|
73
|
+
// Determine database ID for knowledge store
|
|
74
|
+
let databaseId;
|
|
75
|
+
const url = connectionString.toLowerCase();
|
|
76
|
+
if (url.startsWith('sqlite://') || url.startsWith('sqlite:') || url.endsWith('.sqlite') || url.endsWith('.sqlite3') || url.endsWith('.db') || url === ':memory:') {
|
|
77
|
+
// SQLite: use filename as database ID
|
|
78
|
+
let filePath = connectionString;
|
|
79
|
+
if (url.startsWith('sqlite://')) {
|
|
80
|
+
filePath = connectionString.replace(/^sqlite:\/\//i, '');
|
|
81
|
+
}
|
|
82
|
+
else if (url.startsWith('sqlite:')) {
|
|
83
|
+
filePath = connectionString.replace(/^sqlite:/i, '');
|
|
84
|
+
}
|
|
85
|
+
const fileName = filePath.split('/').pop() || 'sqlite';
|
|
86
|
+
databaseId = `sqlite_${fileName.replace(/[^a-zA-Z0-9]/g, '_')}`;
|
|
87
|
+
}
|
|
88
|
+
else {
|
|
89
|
+
// URL-based databases (postgres, mysql)
|
|
90
|
+
const config = (0, base_js_1.parseConnectionString)(connectionString);
|
|
91
|
+
databaseId = `${config.host}_${config.database}`;
|
|
92
|
+
}
|
|
69
93
|
// Create knowledge store
|
|
70
|
-
const databaseId = `${config.host}_${config.database}`;
|
|
71
94
|
const knowledge = (0, store_js_1.createKnowledgeStore)(databaseId);
|
|
72
95
|
await knowledge.load();
|
|
73
|
-
// Update schema hash
|
|
74
|
-
const
|
|
96
|
+
// Update schema hash (SQLite uses 'main' schema)
|
|
97
|
+
const schemaName = url.startsWith('sqlite') || url.endsWith('.db') ? 'main' : options.schema;
|
|
98
|
+
const schema = await adapter.getSchema(schemaName);
|
|
75
99
|
knowledge.updateSchemaHash(schema.schemaHash);
|
|
76
100
|
await knowledge.save();
|
|
77
101
|
// Create safety validator
|
|
@@ -744,18 +768,38 @@ program
|
|
|
744
768
|
.action(async (connectionString, options) => {
|
|
745
769
|
try {
|
|
746
770
|
console.log('[datacontext] Starting REST API server...');
|
|
747
|
-
// Parse connection string
|
|
748
|
-
const config = (0, base_js_1.parseConnectionString)(connectionString);
|
|
749
771
|
// Create adapter (auto-detect database type)
|
|
750
772
|
const adapter = createAdapter(connectionString);
|
|
751
773
|
await adapter.connect();
|
|
752
|
-
|
|
774
|
+
// Determine database ID for knowledge store
|
|
775
|
+
let databaseId;
|
|
776
|
+
const url = connectionString.toLowerCase();
|
|
777
|
+
if (url.startsWith('sqlite://') || url.startsWith('sqlite:') || url.endsWith('.sqlite') || url.endsWith('.sqlite3') || url.endsWith('.db') || url === ':memory:') {
|
|
778
|
+
// SQLite: use filename as database ID
|
|
779
|
+
let filePath = connectionString;
|
|
780
|
+
if (url.startsWith('sqlite://')) {
|
|
781
|
+
filePath = connectionString.replace(/^sqlite:\/\//i, '');
|
|
782
|
+
}
|
|
783
|
+
else if (url.startsWith('sqlite:')) {
|
|
784
|
+
filePath = connectionString.replace(/^sqlite:/i, '');
|
|
785
|
+
}
|
|
786
|
+
const fileName = filePath.split('/').pop() || 'sqlite';
|
|
787
|
+
databaseId = `sqlite_${fileName.replace(/[^a-zA-Z0-9]/g, '_')}`;
|
|
788
|
+
console.log(`[datacontext] Connected to SQLite: ${filePath}`);
|
|
789
|
+
}
|
|
790
|
+
else {
|
|
791
|
+
// URL-based databases (postgres, mysql)
|
|
792
|
+
const config = (0, base_js_1.parseConnectionString)(connectionString);
|
|
793
|
+
databaseId = `${config.host}_${config.database}`;
|
|
794
|
+
console.log(`[datacontext] Connected to ${config.database}`);
|
|
795
|
+
}
|
|
753
796
|
// Create knowledge store
|
|
754
|
-
const databaseId = `${config.host}_${config.database}`;
|
|
755
797
|
const knowledge = (0, store_js_1.createKnowledgeStore)(databaseId);
|
|
756
798
|
await knowledge.load();
|
|
757
|
-
// Update schema hash
|
|
758
|
-
const
|
|
799
|
+
// Update schema hash (SQLite uses 'main' schema)
|
|
800
|
+
const isSqlite = url.startsWith('sqlite') || url.endsWith('.db') || url.endsWith('.sqlite') || url.endsWith('.sqlite3');
|
|
801
|
+
const schemaName = isSqlite ? 'main' : options.schema;
|
|
802
|
+
const schema = await adapter.getSchema(schemaName);
|
|
759
803
|
knowledge.updateSchemaHash(schema.schemaHash);
|
|
760
804
|
await knowledge.save();
|
|
761
805
|
// Create DataContext service
|
package/dist/cli/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,261 @@
|
|
|
1
|
+
# Knowledge Types Guide
|
|
2
|
+
|
|
3
|
+
> DataContext의 지식 유형 정리 및 사용 가이드
|
|
4
|
+
|
|
5
|
+
## Overview
|
|
6
|
+
|
|
7
|
+
DataContext는 4가지 유형의 지식을 관리합니다:
|
|
8
|
+
|
|
9
|
+
| 유형 | 목적 | 자동 적용 | AI 참조 |
|
|
10
|
+
|------|------|:--------:|:-------:|
|
|
11
|
+
| **Table Description** | 테이블/컬럼 설명 | ❌ | ✅ |
|
|
12
|
+
| **Business Glossary** | 용어 → SQL 번역 | ❌ | ✅ |
|
|
13
|
+
| **Business Rule** | 자동 적용 필터 | ✅ | ✅ |
|
|
14
|
+
| **Query Example** | 검증된 SQL 패턴 | ❌ | ✅ |
|
|
15
|
+
|
|
16
|
+
---
|
|
17
|
+
|
|
18
|
+
## 1. Table Description (테이블 설명)
|
|
19
|
+
|
|
20
|
+
**목적:** 테이블과 컬럼의 비즈니스 의미 설명
|
|
21
|
+
|
|
22
|
+
**사용 시점:** AI가 스키마를 이해할 때
|
|
23
|
+
|
|
24
|
+
**예시:**
|
|
25
|
+
```yaml
|
|
26
|
+
table: users
|
|
27
|
+
description: "고객 계정 정보를 저장하는 테이블"
|
|
28
|
+
columns:
|
|
29
|
+
- name: status
|
|
30
|
+
description: "계정 상태 (0=비활성, 1=활성, 2=정지)"
|
|
31
|
+
- name: created_at
|
|
32
|
+
description: "계정 생성 일시"
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
**관리 방법:**
|
|
36
|
+
- `datacontext harvest` - DB 코멘트에서 자동 수집
|
|
37
|
+
- `datacontext describe` - 수동 추가/수정
|
|
38
|
+
|
|
39
|
+
---
|
|
40
|
+
|
|
41
|
+
## 2. Business Glossary (용어 사전) ⭐
|
|
42
|
+
|
|
43
|
+
**목적:** 도메인 용어를 SQL 조건으로 번역
|
|
44
|
+
|
|
45
|
+
**사용 시점:** AI가 자연어 쿼리를 SQL로 변환할 때
|
|
46
|
+
|
|
47
|
+
**핵심 특징:**
|
|
48
|
+
- **선택적 적용** - AI가 컨텍스트에 맞게 판단
|
|
49
|
+
- **번역 도우미** - "활성 사용자"라고 하면 AI가 `status = 1` 사용
|
|
50
|
+
- **동의어 지원** - "active user", "활성화된 사용자" 모두 같은 의미
|
|
51
|
+
|
|
52
|
+
**예시:**
|
|
53
|
+
```yaml
|
|
54
|
+
term: "활성 사용자"
|
|
55
|
+
synonyms: ["active user", "활성화된 사용자"]
|
|
56
|
+
definition: "status 컬럼이 1인 사용자"
|
|
57
|
+
sqlExpression: "status = 1"
|
|
58
|
+
appliesTo:
|
|
59
|
+
tables: ["users"]
|
|
60
|
+
category: status
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
**사용 시나리오:**
|
|
64
|
+
```
|
|
65
|
+
사용자: "활성 사용자 목록 보여줘"
|
|
66
|
+
AI: SELECT * FROM users WHERE status = 1; -- Glossary 참조
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
**관리 방법:**
|
|
70
|
+
- `datacontext glossary add "활성 사용자" "status가 1인 사용자" --sql "status = 1"`
|
|
71
|
+
- `datacontext glossary generate "활성=status 1, VIP=주문 10건 이상"`
|
|
72
|
+
|
|
73
|
+
---
|
|
74
|
+
|
|
75
|
+
## 3. Business Rule (비즈니스 룰) ⚠️
|
|
76
|
+
|
|
77
|
+
**목적:** 모든 쿼리에 자동으로 적용되는 필터/제약
|
|
78
|
+
|
|
79
|
+
**사용 시점:** 쿼리 실행 전 시스템이 자동 적용
|
|
80
|
+
|
|
81
|
+
**핵심 특징:**
|
|
82
|
+
- **강제 적용** - 사용자가 명시하지 않아도 항상 추가
|
|
83
|
+
- **보안/무결성** - Soft delete, Tenant isolation 등
|
|
84
|
+
- **우선순위** - 여러 룰이 있으면 priority 순으로 적용
|
|
85
|
+
|
|
86
|
+
**예시:**
|
|
87
|
+
```yaml
|
|
88
|
+
name: "soft_delete_filter"
|
|
89
|
+
description: "삭제된 레코드 제외 (deleted_at IS NULL)"
|
|
90
|
+
condition: "deleted_at IS NULL"
|
|
91
|
+
appliesTo:
|
|
92
|
+
tables: ["users", "orders", "products"]
|
|
93
|
+
isActive: true
|
|
94
|
+
priority: 100
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
**사용 시나리오:**
|
|
98
|
+
```
|
|
99
|
+
사용자: "SELECT * FROM users"
|
|
100
|
+
시스템 적용 후: "SELECT * FROM users WHERE deleted_at IS NULL"
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
**관리 방법:**
|
|
104
|
+
- VS Code: `DataContext: Add Business Rule`
|
|
105
|
+
- CLI: 현재 미구현 (향후 추가)
|
|
106
|
+
|
|
107
|
+
---
|
|
108
|
+
|
|
109
|
+
## 4. Query Example (쿼리 예시)
|
|
110
|
+
|
|
111
|
+
**목적:** 검증된 SQL 패턴 저장
|
|
112
|
+
|
|
113
|
+
**사용 시점:** AI가 유사한 쿼리 생성 시 참조
|
|
114
|
+
|
|
115
|
+
**예시:**
|
|
116
|
+
```yaml
|
|
117
|
+
intent: "최근 30일 주문 총액 조회"
|
|
118
|
+
sql: |
|
|
119
|
+
SELECT
|
|
120
|
+
user_id,
|
|
121
|
+
SUM(total_amount) as total_spent
|
|
122
|
+
FROM orders
|
|
123
|
+
WHERE created_at >= CURRENT_DATE - INTERVAL '30 days'
|
|
124
|
+
GROUP BY user_id
|
|
125
|
+
tables: ["orders"]
|
|
126
|
+
isVerified: true
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
**관리 방법:**
|
|
130
|
+
- VS Code: `DataContext: Add Query Example`
|
|
131
|
+
- 피드백에서 자동 생성 (성공한 쿼리)
|
|
132
|
+
|
|
133
|
+
---
|
|
134
|
+
|
|
135
|
+
## Glossary vs Rule: 언제 무엇을 사용?
|
|
136
|
+
|
|
137
|
+
### Glossary 사용 (용어 번역)
|
|
138
|
+
|
|
139
|
+
✅ 도메인 특화 용어가 있을 때
|
|
140
|
+
✅ 사용자가 자연어로 요청할 때
|
|
141
|
+
✅ 같은 개념에 여러 표현이 있을 때
|
|
142
|
+
|
|
143
|
+
**예시:**
|
|
144
|
+
- "활성 사용자", "VIP 고객", "최근 주문"
|
|
145
|
+
- 마케팅 용어, 비즈니스 지표
|
|
146
|
+
|
|
147
|
+
### Rule 사용 (자동 적용 필터)
|
|
148
|
+
|
|
149
|
+
✅ 항상 적용해야 하는 조건
|
|
150
|
+
✅ 보안/무결성 관련
|
|
151
|
+
✅ 사용자가 잊어버려도 적용되어야 함
|
|
152
|
+
|
|
153
|
+
**예시:**
|
|
154
|
+
- Soft delete 필터 (`deleted_at IS NULL`)
|
|
155
|
+
- Tenant isolation (`tenant_id = ?`)
|
|
156
|
+
- 권한 기반 필터 (`is_public = true OR owner_id = ?`)
|
|
157
|
+
|
|
158
|
+
---
|
|
159
|
+
|
|
160
|
+
## 스케일 대응 전략
|
|
161
|
+
|
|
162
|
+
### 테이블이 많아질 때
|
|
163
|
+
|
|
164
|
+
1. **태그로 그룹화**
|
|
165
|
+
```yaml
|
|
166
|
+
table: user_preferences
|
|
167
|
+
tags: ["user", "settings"]
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
2. **스키마별 분리**
|
|
171
|
+
```
|
|
172
|
+
knowledge/
|
|
173
|
+
├── public/ # public schema
|
|
174
|
+
├── analytics/ # analytics schema
|
|
175
|
+
└── admin/ # admin schema
|
|
176
|
+
```
|
|
177
|
+
|
|
178
|
+
### DB가 여러 개일 때
|
|
179
|
+
|
|
180
|
+
1. **DB별 Knowledge 분리**
|
|
181
|
+
```
|
|
182
|
+
.datacontext/
|
|
183
|
+
├── users-db/
|
|
184
|
+
│ └── knowledge.json
|
|
185
|
+
├── orders-db/
|
|
186
|
+
│ └── knowledge.json
|
|
187
|
+
└── analytics-db/
|
|
188
|
+
└── knowledge.json
|
|
189
|
+
```
|
|
190
|
+
|
|
191
|
+
2. **Cross-DB Glossary**
|
|
192
|
+
```yaml
|
|
193
|
+
term: "고객"
|
|
194
|
+
appliesTo:
|
|
195
|
+
databases:
|
|
196
|
+
- name: users-db
|
|
197
|
+
tables: ["users"]
|
|
198
|
+
- name: orders-db
|
|
199
|
+
tables: ["customers"]
|
|
200
|
+
```
|
|
201
|
+
|
|
202
|
+
### 용어가 많아질 때
|
|
203
|
+
|
|
204
|
+
1. **카테고리 활용**
|
|
205
|
+
- `status`: 상태 관련 (활성, 비활성, 정지)
|
|
206
|
+
- `time`: 시간 관련 (최근, 이번달, 지난주)
|
|
207
|
+
- `money`: 금액 관련 (매출, 비용, 이익)
|
|
208
|
+
- `entity`: 엔티티 타입 (고객, 상품, 주문)
|
|
209
|
+
- `metric`: 지표 (전환율, 이탈률)
|
|
210
|
+
|
|
211
|
+
2. **검색 및 자동완성**
|
|
212
|
+
```bash
|
|
213
|
+
datacontext glossary search "사용자"
|
|
214
|
+
# → 활성 사용자, 신규 사용자, VIP 사용자, ...
|
|
215
|
+
```
|
|
216
|
+
|
|
217
|
+
---
|
|
218
|
+
|
|
219
|
+
## 권장 워크플로우
|
|
220
|
+
|
|
221
|
+
### 1단계: 기본 설정 (처음 연결 시)
|
|
222
|
+
|
|
223
|
+
```bash
|
|
224
|
+
# DB 메타데이터 수집
|
|
225
|
+
datacontext harvest
|
|
226
|
+
|
|
227
|
+
# 기본 Soft Delete 룰 추가 (해당되는 경우)
|
|
228
|
+
# VS Code: DataContext: Add Business Rule
|
|
229
|
+
```
|
|
230
|
+
|
|
231
|
+
### 2단계: 도메인 용어 추가 (점진적)
|
|
232
|
+
|
|
233
|
+
```bash
|
|
234
|
+
# 자주 사용하는 용어부터
|
|
235
|
+
datacontext glossary add "활성 사용자" "status가 1인 사용자" --sql "status = 1"
|
|
236
|
+
datacontext glossary add "최근 주문" "30일 이내 주문" --sql "created_at > now() - interval '30 days'"
|
|
237
|
+
|
|
238
|
+
# 또는 AI로 일괄 생성
|
|
239
|
+
datacontext glossary generate "활성=status 1, VIP=order 10건 이상, 신규=created_at 7일 이내"
|
|
240
|
+
```
|
|
241
|
+
|
|
242
|
+
### 3단계: 사용하면서 개선
|
|
243
|
+
|
|
244
|
+
```bash
|
|
245
|
+
# 쿼리 피드백 기록 (자동)
|
|
246
|
+
# 자주 수정되는 패턴 → Rule 또는 Glossary 추가
|
|
247
|
+
|
|
248
|
+
# 성공한 쿼리 → Query Example로 저장
|
|
249
|
+
```
|
|
250
|
+
|
|
251
|
+
---
|
|
252
|
+
|
|
253
|
+
## 요약
|
|
254
|
+
|
|
255
|
+
| 질문 | 답 |
|
|
256
|
+
|------|-----|
|
|
257
|
+
| "AI가 용어를 이해하게 하고 싶다" | → **Glossary** |
|
|
258
|
+
| "모든 쿼리에 조건을 자동 추가하고 싶다" | → **Rule** |
|
|
259
|
+
| "테이블 의미를 설명하고 싶다" | → **Table Description** |
|
|
260
|
+
| "좋은 쿼리 패턴을 저장하고 싶다" | → **Query Example** |
|
|
261
|
+
|
package/package.json
CHANGED
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
# Create SQLite test database with sample data
|
|
3
|
+
|
|
4
|
+
set -e
|
|
5
|
+
|
|
6
|
+
DB_PATH="${1:-./test-sqlite.db}"
|
|
7
|
+
|
|
8
|
+
echo "Creating SQLite test database at: $DB_PATH"
|
|
9
|
+
|
|
10
|
+
# Remove existing
|
|
11
|
+
rm -f "$DB_PATH"
|
|
12
|
+
|
|
13
|
+
# Create database and tables
|
|
14
|
+
sqlite3 "$DB_PATH" << 'EOF'
|
|
15
|
+
-- Users table
|
|
16
|
+
CREATE TABLE users (
|
|
17
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
18
|
+
name TEXT NOT NULL,
|
|
19
|
+
email TEXT UNIQUE NOT NULL,
|
|
20
|
+
status INTEGER DEFAULT 1,
|
|
21
|
+
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
|
|
22
|
+
deleted_at DATETIME
|
|
23
|
+
);
|
|
24
|
+
|
|
25
|
+
-- Products table
|
|
26
|
+
CREATE TABLE products (
|
|
27
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
28
|
+
name TEXT NOT NULL,
|
|
29
|
+
price REAL NOT NULL,
|
|
30
|
+
inventory INTEGER DEFAULT 0,
|
|
31
|
+
category TEXT,
|
|
32
|
+
created_at DATETIME DEFAULT CURRENT_TIMESTAMP
|
|
33
|
+
);
|
|
34
|
+
|
|
35
|
+
-- Orders table
|
|
36
|
+
CREATE TABLE orders (
|
|
37
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
38
|
+
user_id INTEGER REFERENCES users(id),
|
|
39
|
+
product_id INTEGER REFERENCES products(id),
|
|
40
|
+
quantity INTEGER NOT NULL,
|
|
41
|
+
total_amount REAL NOT NULL,
|
|
42
|
+
status TEXT DEFAULT 'pending',
|
|
43
|
+
created_at DATETIME DEFAULT CURRENT_TIMESTAMP
|
|
44
|
+
);
|
|
45
|
+
|
|
46
|
+
-- Insert sample data
|
|
47
|
+
INSERT INTO users (name, email, status) VALUES
|
|
48
|
+
('Alice', 'alice@example.com', 1),
|
|
49
|
+
('Bob', 'bob@example.com', 1),
|
|
50
|
+
('Charlie', 'charlie@example.com', 0),
|
|
51
|
+
('Diana', 'diana@example.com', 2);
|
|
52
|
+
|
|
53
|
+
INSERT INTO products (name, price, inventory, category) VALUES
|
|
54
|
+
('Laptop', 999.99, 50, 'electronics'),
|
|
55
|
+
('Mouse', 29.99, 200, 'electronics'),
|
|
56
|
+
('Keyboard', 79.99, 100, 'electronics'),
|
|
57
|
+
('Desk Chair', 299.99, 30, 'furniture');
|
|
58
|
+
|
|
59
|
+
INSERT INTO orders (user_id, product_id, quantity, total_amount, status) VALUES
|
|
60
|
+
(1, 1, 1, 999.99, 'delivered'),
|
|
61
|
+
(1, 2, 2, 59.98, 'delivered'),
|
|
62
|
+
(2, 3, 1, 79.99, 'shipped'),
|
|
63
|
+
(2, 4, 1, 299.99, 'pending');
|
|
64
|
+
|
|
65
|
+
SELECT 'SQLite test database created!' as result;
|
|
66
|
+
.tables
|
|
67
|
+
EOF
|
|
68
|
+
|
|
69
|
+
echo ""
|
|
70
|
+
echo "Database created: $DB_PATH"
|
|
71
|
+
echo ""
|
|
72
|
+
echo "To start DataContext server:"
|
|
73
|
+
echo " npx @kiyeonjeon21/datacontext serve sqlite:$DB_PATH --port 3000"
|
|
74
|
+
echo ""
|
|
75
|
+
|
|
@@ -0,0 +1,324 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
# Test Databases Setup Script
|
|
3
|
+
# Uses Podman to run PostgreSQL, MySQL, and MariaDB for testing
|
|
4
|
+
|
|
5
|
+
set -e
|
|
6
|
+
|
|
7
|
+
# Colors
|
|
8
|
+
RED='\033[0;31m'
|
|
9
|
+
GREEN='\033[0;32m'
|
|
10
|
+
YELLOW='\033[1;33m'
|
|
11
|
+
NC='\033[0m' # No Color
|
|
12
|
+
|
|
13
|
+
echo -e "${GREEN}=== DataContext Database Test Environment ===${NC}"
|
|
14
|
+
|
|
15
|
+
# Check if podman is available
|
|
16
|
+
if ! command -v podman &> /dev/null; then
|
|
17
|
+
echo -e "${RED}Error: podman is not installed${NC}"
|
|
18
|
+
echo "Install with: brew install podman"
|
|
19
|
+
exit 1
|
|
20
|
+
fi
|
|
21
|
+
|
|
22
|
+
# Configuration
|
|
23
|
+
POSTGRES_PORT=5433
|
|
24
|
+
MYSQL_PORT=3307
|
|
25
|
+
MARIADB_PORT=3308
|
|
26
|
+
NETWORK_NAME="datacontext-test"
|
|
27
|
+
|
|
28
|
+
# Create network if not exists
|
|
29
|
+
podman network exists $NETWORK_NAME 2>/dev/null || podman network create $NETWORK_NAME
|
|
30
|
+
|
|
31
|
+
# Function to start PostgreSQL
|
|
32
|
+
start_postgres() {
|
|
33
|
+
echo -e "\n${YELLOW}Starting PostgreSQL...${NC}"
|
|
34
|
+
|
|
35
|
+
# Stop if running
|
|
36
|
+
podman rm -f datacontext-postgres 2>/dev/null || true
|
|
37
|
+
|
|
38
|
+
podman run -d \
|
|
39
|
+
--name datacontext-postgres \
|
|
40
|
+
--network $NETWORK_NAME \
|
|
41
|
+
-e POSTGRES_USER=postgres \
|
|
42
|
+
-e POSTGRES_PASSWORD=postgres \
|
|
43
|
+
-e POSTGRES_DB=datacontext_test \
|
|
44
|
+
-p $POSTGRES_PORT:5432 \
|
|
45
|
+
postgres:15-alpine
|
|
46
|
+
|
|
47
|
+
echo -e "${GREEN}PostgreSQL started on port $POSTGRES_PORT${NC}"
|
|
48
|
+
echo "Connection: postgres://postgres:postgres@localhost:$POSTGRES_PORT/datacontext_test"
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
# Function to start MySQL
|
|
52
|
+
start_mysql() {
|
|
53
|
+
echo -e "\n${YELLOW}Starting MySQL...${NC}"
|
|
54
|
+
|
|
55
|
+
# Stop if running
|
|
56
|
+
podman rm -f datacontext-mysql 2>/dev/null || true
|
|
57
|
+
|
|
58
|
+
podman run -d \
|
|
59
|
+
--name datacontext-mysql \
|
|
60
|
+
--network $NETWORK_NAME \
|
|
61
|
+
-e MYSQL_ROOT_PASSWORD=mysql \
|
|
62
|
+
-e MYSQL_DATABASE=datacontext_test \
|
|
63
|
+
-e MYSQL_USER=mysql \
|
|
64
|
+
-e MYSQL_PASSWORD=mysql \
|
|
65
|
+
-p $MYSQL_PORT:3306 \
|
|
66
|
+
mysql:8.0
|
|
67
|
+
|
|
68
|
+
echo -e "${GREEN}MySQL started on port $MYSQL_PORT${NC}"
|
|
69
|
+
echo "Connection: mysql://mysql:mysql@localhost:$MYSQL_PORT/datacontext_test"
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
# Function to start MariaDB
|
|
73
|
+
start_mariadb() {
|
|
74
|
+
echo -e "\n${YELLOW}Starting MariaDB...${NC}"
|
|
75
|
+
|
|
76
|
+
# Stop if running
|
|
77
|
+
podman rm -f datacontext-mariadb 2>/dev/null || true
|
|
78
|
+
|
|
79
|
+
podman run -d \
|
|
80
|
+
--name datacontext-mariadb \
|
|
81
|
+
--network $NETWORK_NAME \
|
|
82
|
+
-e MARIADB_ROOT_PASSWORD=mariadb \
|
|
83
|
+
-e MARIADB_DATABASE=datacontext_test \
|
|
84
|
+
-e MARIADB_USER=mariadb \
|
|
85
|
+
-e MARIADB_PASSWORD=mariadb \
|
|
86
|
+
-p $MARIADB_PORT:3306 \
|
|
87
|
+
mariadb:10.11
|
|
88
|
+
|
|
89
|
+
echo -e "${GREEN}MariaDB started on port $MARIADB_PORT${NC}"
|
|
90
|
+
echo "Connection: mysql://mariadb:mariadb@localhost:$MARIADB_PORT/datacontext_test"
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
# Function to wait for DB
|
|
94
|
+
wait_for_db() {
|
|
95
|
+
local name=$1
|
|
96
|
+
local port=$2
|
|
97
|
+
local max_attempts=30
|
|
98
|
+
local attempt=0
|
|
99
|
+
|
|
100
|
+
echo -e "${YELLOW}Waiting for $name to be ready...${NC}"
|
|
101
|
+
|
|
102
|
+
while [ $attempt -lt $max_attempts ]; do
|
|
103
|
+
if podman exec $name echo "SELECT 1" 2>/dev/null; then
|
|
104
|
+
echo -e "${GREEN}$name is ready!${NC}"
|
|
105
|
+
return 0
|
|
106
|
+
fi
|
|
107
|
+
attempt=$((attempt + 1))
|
|
108
|
+
sleep 1
|
|
109
|
+
done
|
|
110
|
+
|
|
111
|
+
echo -e "${RED}$name failed to start${NC}"
|
|
112
|
+
return 1
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
# Function to create test data
|
|
116
|
+
create_test_data() {
|
|
117
|
+
local db_type=$1
|
|
118
|
+
local container=$2
|
|
119
|
+
|
|
120
|
+
echo -e "\n${YELLOW}Creating test data for $db_type...${NC}"
|
|
121
|
+
|
|
122
|
+
case $db_type in
|
|
123
|
+
postgres)
|
|
124
|
+
podman exec -i $container psql -U postgres -d datacontext_test << 'EOF'
|
|
125
|
+
-- Users table
|
|
126
|
+
CREATE TABLE IF NOT EXISTS users (
|
|
127
|
+
id SERIAL PRIMARY KEY,
|
|
128
|
+
name VARCHAR(100) NOT NULL,
|
|
129
|
+
email VARCHAR(255) UNIQUE NOT NULL,
|
|
130
|
+
status INTEGER DEFAULT 1,
|
|
131
|
+
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
132
|
+
deleted_at TIMESTAMP
|
|
133
|
+
);
|
|
134
|
+
|
|
135
|
+
COMMENT ON TABLE users IS 'User accounts table';
|
|
136
|
+
COMMENT ON COLUMN users.status IS 'Account status: 0=inactive, 1=active, 2=suspended';
|
|
137
|
+
|
|
138
|
+
-- Products table
|
|
139
|
+
CREATE TABLE IF NOT EXISTS products (
|
|
140
|
+
id SERIAL PRIMARY KEY,
|
|
141
|
+
name VARCHAR(200) NOT NULL,
|
|
142
|
+
price DECIMAL(10,2) NOT NULL,
|
|
143
|
+
inventory INTEGER DEFAULT 0,
|
|
144
|
+
category VARCHAR(50),
|
|
145
|
+
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
|
146
|
+
);
|
|
147
|
+
|
|
148
|
+
COMMENT ON TABLE products IS 'Product catalog';
|
|
149
|
+
|
|
150
|
+
-- Orders table
|
|
151
|
+
CREATE TABLE IF NOT EXISTS orders (
|
|
152
|
+
id SERIAL PRIMARY KEY,
|
|
153
|
+
user_id INTEGER REFERENCES users(id),
|
|
154
|
+
product_id INTEGER REFERENCES products(id),
|
|
155
|
+
quantity INTEGER NOT NULL,
|
|
156
|
+
total_amount DECIMAL(10,2) NOT NULL,
|
|
157
|
+
status VARCHAR(20) DEFAULT 'pending',
|
|
158
|
+
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
|
159
|
+
);
|
|
160
|
+
|
|
161
|
+
COMMENT ON TABLE orders IS 'Customer orders';
|
|
162
|
+
COMMENT ON COLUMN orders.status IS 'Order status: pending, paid, shipped, delivered, cancelled';
|
|
163
|
+
|
|
164
|
+
-- Insert sample data
|
|
165
|
+
INSERT INTO users (name, email, status) VALUES
|
|
166
|
+
('Alice', 'alice@example.com', 1),
|
|
167
|
+
('Bob', 'bob@example.com', 1),
|
|
168
|
+
('Charlie', 'charlie@example.com', 0),
|
|
169
|
+
('Diana', 'diana@example.com', 2)
|
|
170
|
+
ON CONFLICT DO NOTHING;
|
|
171
|
+
|
|
172
|
+
INSERT INTO products (name, price, inventory, category) VALUES
|
|
173
|
+
('Laptop', 999.99, 50, 'electronics'),
|
|
174
|
+
('Mouse', 29.99, 200, 'electronics'),
|
|
175
|
+
('Keyboard', 79.99, 100, 'electronics'),
|
|
176
|
+
('Desk Chair', 299.99, 30, 'furniture')
|
|
177
|
+
ON CONFLICT DO NOTHING;
|
|
178
|
+
|
|
179
|
+
INSERT INTO orders (user_id, product_id, quantity, total_amount, status) VALUES
|
|
180
|
+
(1, 1, 1, 999.99, 'delivered'),
|
|
181
|
+
(1, 2, 2, 59.98, 'delivered'),
|
|
182
|
+
(2, 3, 1, 79.99, 'shipped'),
|
|
183
|
+
(2, 4, 1, 299.99, 'pending')
|
|
184
|
+
ON CONFLICT DO NOTHING;
|
|
185
|
+
|
|
186
|
+
SELECT 'PostgreSQL test data created!' as result;
|
|
187
|
+
EOF
|
|
188
|
+
;;
|
|
189
|
+
|
|
190
|
+
mysql)
|
|
191
|
+
sleep 10 # MySQL takes longer to start
|
|
192
|
+
podman exec -i $container mysql -umysql -pmysql datacontext_test << 'EOF'
|
|
193
|
+
-- Users table
|
|
194
|
+
CREATE TABLE IF NOT EXISTS users (
|
|
195
|
+
id INT AUTO_INCREMENT PRIMARY KEY,
|
|
196
|
+
name VARCHAR(100) NOT NULL,
|
|
197
|
+
email VARCHAR(255) UNIQUE NOT NULL,
|
|
198
|
+
status INT DEFAULT 1,
|
|
199
|
+
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
200
|
+
deleted_at TIMESTAMP NULL
|
|
201
|
+
) COMMENT='User accounts table';
|
|
202
|
+
|
|
203
|
+
-- Products table
|
|
204
|
+
CREATE TABLE IF NOT EXISTS products (
|
|
205
|
+
id INT AUTO_INCREMENT PRIMARY KEY,
|
|
206
|
+
name VARCHAR(200) NOT NULL,
|
|
207
|
+
price DECIMAL(10,2) NOT NULL,
|
|
208
|
+
inventory INT DEFAULT 0,
|
|
209
|
+
category VARCHAR(50),
|
|
210
|
+
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
|
211
|
+
) COMMENT='Product catalog';
|
|
212
|
+
|
|
213
|
+
-- Orders table
|
|
214
|
+
CREATE TABLE IF NOT EXISTS orders (
|
|
215
|
+
id INT AUTO_INCREMENT PRIMARY KEY,
|
|
216
|
+
user_id INT,
|
|
217
|
+
product_id INT,
|
|
218
|
+
quantity INT NOT NULL,
|
|
219
|
+
total_amount DECIMAL(10,2) NOT NULL,
|
|
220
|
+
status VARCHAR(20) DEFAULT 'pending',
|
|
221
|
+
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
222
|
+
FOREIGN KEY (user_id) REFERENCES users(id),
|
|
223
|
+
FOREIGN KEY (product_id) REFERENCES products(id)
|
|
224
|
+
) COMMENT='Customer orders';
|
|
225
|
+
|
|
226
|
+
-- Insert sample data
|
|
227
|
+
INSERT IGNORE INTO users (name, email, status) VALUES
|
|
228
|
+
('Alice', 'alice@example.com', 1),
|
|
229
|
+
('Bob', 'bob@example.com', 1),
|
|
230
|
+
('Charlie', 'charlie@example.com', 0),
|
|
231
|
+
('Diana', 'diana@example.com', 2);
|
|
232
|
+
|
|
233
|
+
INSERT IGNORE INTO products (name, price, inventory, category) VALUES
|
|
234
|
+
('Laptop', 999.99, 50, 'electronics'),
|
|
235
|
+
('Mouse', 29.99, 200, 'electronics'),
|
|
236
|
+
('Keyboard', 79.99, 100, 'electronics'),
|
|
237
|
+
('Desk Chair', 299.99, 30, 'furniture');
|
|
238
|
+
|
|
239
|
+
INSERT IGNORE INTO orders (user_id, product_id, quantity, total_amount, status) VALUES
|
|
240
|
+
(1, 1, 1, 999.99, 'delivered'),
|
|
241
|
+
(1, 2, 2, 59.98, 'delivered'),
|
|
242
|
+
(2, 3, 1, 79.99, 'shipped'),
|
|
243
|
+
(2, 4, 1, 299.99, 'pending');
|
|
244
|
+
|
|
245
|
+
SELECT 'MySQL test data created!' as result;
|
|
246
|
+
EOF
|
|
247
|
+
;;
|
|
248
|
+
esac
|
|
249
|
+
|
|
250
|
+
echo -e "${GREEN}Test data created for $db_type${NC}"
|
|
251
|
+
}
|
|
252
|
+
|
|
253
|
+
# Function to stop all
|
|
254
|
+
stop_all() {
|
|
255
|
+
echo -e "\n${YELLOW}Stopping all test databases...${NC}"
|
|
256
|
+
podman rm -f datacontext-postgres datacontext-mysql datacontext-mariadb 2>/dev/null || true
|
|
257
|
+
echo -e "${GREEN}All databases stopped${NC}"
|
|
258
|
+
}
|
|
259
|
+
|
|
260
|
+
# Function to show status
|
|
261
|
+
show_status() {
|
|
262
|
+
echo -e "\n${GREEN}=== Database Status ===${NC}"
|
|
263
|
+
podman ps --filter "name=datacontext-" --format "table {{.Names}}\t{{.Status}}\t{{.Ports}}"
|
|
264
|
+
}
|
|
265
|
+
|
|
266
|
+
# Function to show connection strings
|
|
267
|
+
show_connections() {
|
|
268
|
+
echo -e "\n${GREEN}=== Connection Strings ===${NC}"
|
|
269
|
+
echo ""
|
|
270
|
+
echo -e "${YELLOW}PostgreSQL:${NC}"
|
|
271
|
+
echo " postgres://postgres:postgres@localhost:$POSTGRES_PORT/datacontext_test"
|
|
272
|
+
echo ""
|
|
273
|
+
echo -e "${YELLOW}MySQL:${NC}"
|
|
274
|
+
echo " mysql://mysql:mysql@localhost:$MYSQL_PORT/datacontext_test"
|
|
275
|
+
echo ""
|
|
276
|
+
echo -e "${YELLOW}MariaDB:${NC}"
|
|
277
|
+
echo " mysql://mariadb:mariadb@localhost:$MARIADB_PORT/datacontext_test"
|
|
278
|
+
echo ""
|
|
279
|
+
echo -e "${GREEN}=== DataContext Commands ===${NC}"
|
|
280
|
+
echo ""
|
|
281
|
+
echo "# Start servers"
|
|
282
|
+
echo "npx @kiyeonjeon21/datacontext serve postgres://postgres:postgres@localhost:$POSTGRES_PORT/datacontext_test --port 3000"
|
|
283
|
+
echo "npx @kiyeonjeon21/datacontext serve mysql://mysql:mysql@localhost:$MYSQL_PORT/datacontext_test --port 3001"
|
|
284
|
+
echo ""
|
|
285
|
+
}
|
|
286
|
+
|
|
287
|
+
# Parse arguments
|
|
288
|
+
case "${1:-start}" in
|
|
289
|
+
start)
|
|
290
|
+
start_postgres
|
|
291
|
+
start_mysql
|
|
292
|
+
sleep 15 # Wait for DBs to be ready
|
|
293
|
+
create_test_data postgres datacontext-postgres
|
|
294
|
+
create_test_data mysql datacontext-mysql
|
|
295
|
+
show_status
|
|
296
|
+
show_connections
|
|
297
|
+
;;
|
|
298
|
+
postgres)
|
|
299
|
+
start_postgres
|
|
300
|
+
sleep 5
|
|
301
|
+
create_test_data postgres datacontext-postgres
|
|
302
|
+
show_connections
|
|
303
|
+
;;
|
|
304
|
+
mysql)
|
|
305
|
+
start_mysql
|
|
306
|
+
sleep 15
|
|
307
|
+
create_test_data mysql datacontext-mysql
|
|
308
|
+
show_connections
|
|
309
|
+
;;
|
|
310
|
+
stop)
|
|
311
|
+
stop_all
|
|
312
|
+
;;
|
|
313
|
+
status)
|
|
314
|
+
show_status
|
|
315
|
+
show_connections
|
|
316
|
+
;;
|
|
317
|
+
*)
|
|
318
|
+
echo "Usage: $0 {start|postgres|mysql|stop|status}"
|
|
319
|
+
exit 1
|
|
320
|
+
;;
|
|
321
|
+
esac
|
|
322
|
+
|
|
323
|
+
echo -e "\n${GREEN}Done!${NC}"
|
|
324
|
+
|
|
File without changes
|
package/src/adapters/sqlite.ts
CHANGED
|
@@ -11,6 +11,8 @@
|
|
|
11
11
|
*/
|
|
12
12
|
|
|
13
13
|
import Database from 'better-sqlite3';
|
|
14
|
+
import { existsSync, mkdirSync } from 'fs';
|
|
15
|
+
import { dirname, resolve } from 'path';
|
|
14
16
|
import type { DatabaseAdapter, QueryResult, ConnectionConfig } from './base.js';
|
|
15
17
|
import type { SchemaInfo, TableInfo, ColumnInfo, IndexInfo, ForeignKeyInfo } from '../schema/types.js';
|
|
16
18
|
import { hashSchema } from '../knowledge/schema-hash.js';
|
|
@@ -41,6 +43,20 @@ export class SQLiteAdapter implements DatabaseAdapter {
|
|
|
41
43
|
}
|
|
42
44
|
|
|
43
45
|
try {
|
|
46
|
+
// Resolve relative paths to absolute
|
|
47
|
+
let resolvedPath = this.filePath;
|
|
48
|
+
if (this.filePath !== ':memory:') {
|
|
49
|
+
resolvedPath = resolve(process.cwd(), this.filePath);
|
|
50
|
+
|
|
51
|
+
// Ensure parent directory exists
|
|
52
|
+
const dir = dirname(resolvedPath);
|
|
53
|
+
if (!existsSync(dir)) {
|
|
54
|
+
mkdirSync(dir, { recursive: true });
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
this.filePath = resolvedPath;
|
|
58
|
+
}
|
|
59
|
+
|
|
44
60
|
this.db = new Database(this.filePath, { readonly: false });
|
|
45
61
|
// Enable foreign keys
|
|
46
62
|
this.db.pragma('foreign_keys = ON');
|
package/src/cli/index.ts
CHANGED
|
@@ -34,9 +34,14 @@ function createAdapter(connectionString: string): DatabaseAdapter {
|
|
|
34
34
|
return createPostgresAdapter(connectionString);
|
|
35
35
|
} else if (url.startsWith('mysql://') || url.startsWith('mariadb://')) {
|
|
36
36
|
return createMySQLAdapter(connectionString);
|
|
37
|
-
} else if (url.startsWith('sqlite://') || url.endsWith('.sqlite') || url.endsWith('.sqlite3') || url.endsWith('.db') || url === ':memory:') {
|
|
38
|
-
// SQLite: sqlite://path
|
|
39
|
-
|
|
37
|
+
} else if (url.startsWith('sqlite://') || url.startsWith('sqlite:') || url.endsWith('.sqlite') || url.endsWith('.sqlite3') || url.endsWith('.db') || url === ':memory:') {
|
|
38
|
+
// SQLite: sqlite://path or sqlite:path or ./mydb.sqlite or :memory:
|
|
39
|
+
let filePath = connectionString;
|
|
40
|
+
if (url.startsWith('sqlite://')) {
|
|
41
|
+
filePath = connectionString.replace(/^sqlite:\/\//i, '');
|
|
42
|
+
} else if (url.startsWith('sqlite:')) {
|
|
43
|
+
filePath = connectionString.replace(/^sqlite:/i, '');
|
|
44
|
+
}
|
|
40
45
|
return createSQLiteAdapter(filePath);
|
|
41
46
|
} else {
|
|
42
47
|
throw new Error(
|
|
@@ -65,20 +70,37 @@ program
|
|
|
65
70
|
.option('--allowed-tables <tables...>', 'Only allow access to these tables')
|
|
66
71
|
.action(async (connectionString: string, options) => {
|
|
67
72
|
try {
|
|
68
|
-
// Parse connection string
|
|
69
|
-
const config = parseConnectionString(connectionString);
|
|
70
|
-
|
|
71
73
|
// Create adapter (auto-detect database type)
|
|
72
74
|
const adapter = createAdapter(connectionString);
|
|
73
75
|
await adapter.connect();
|
|
74
76
|
|
|
77
|
+
// Determine database ID for knowledge store
|
|
78
|
+
let databaseId: string;
|
|
79
|
+
const url = connectionString.toLowerCase();
|
|
80
|
+
|
|
81
|
+
if (url.startsWith('sqlite://') || url.startsWith('sqlite:') || url.endsWith('.sqlite') || url.endsWith('.sqlite3') || url.endsWith('.db') || url === ':memory:') {
|
|
82
|
+
// SQLite: use filename as database ID
|
|
83
|
+
let filePath = connectionString;
|
|
84
|
+
if (url.startsWith('sqlite://')) {
|
|
85
|
+
filePath = connectionString.replace(/^sqlite:\/\//i, '');
|
|
86
|
+
} else if (url.startsWith('sqlite:')) {
|
|
87
|
+
filePath = connectionString.replace(/^sqlite:/i, '');
|
|
88
|
+
}
|
|
89
|
+
const fileName = filePath.split('/').pop() || 'sqlite';
|
|
90
|
+
databaseId = `sqlite_${fileName.replace(/[^a-zA-Z0-9]/g, '_')}`;
|
|
91
|
+
} else {
|
|
92
|
+
// URL-based databases (postgres, mysql)
|
|
93
|
+
const config = parseConnectionString(connectionString);
|
|
94
|
+
databaseId = `${config.host}_${config.database}`;
|
|
95
|
+
}
|
|
96
|
+
|
|
75
97
|
// Create knowledge store
|
|
76
|
-
const databaseId = `${config.host}_${config.database}`;
|
|
77
98
|
const knowledge = createKnowledgeStore(databaseId);
|
|
78
99
|
await knowledge.load();
|
|
79
100
|
|
|
80
|
-
// Update schema hash
|
|
81
|
-
const
|
|
101
|
+
// Update schema hash (SQLite uses 'main' schema)
|
|
102
|
+
const schemaName = url.startsWith('sqlite') || url.endsWith('.db') ? 'main' : options.schema;
|
|
103
|
+
const schema = await adapter.getSchema(schemaName);
|
|
82
104
|
knowledge.updateSchemaHash(schema.schemaHash);
|
|
83
105
|
await knowledge.save();
|
|
84
106
|
|
|
@@ -836,21 +858,40 @@ program
|
|
|
836
858
|
try {
|
|
837
859
|
console.log('[datacontext] Starting REST API server...');
|
|
838
860
|
|
|
839
|
-
// Parse connection string
|
|
840
|
-
const config = parseConnectionString(connectionString);
|
|
841
|
-
|
|
842
861
|
// Create adapter (auto-detect database type)
|
|
843
862
|
const adapter = createAdapter(connectionString);
|
|
844
863
|
await adapter.connect();
|
|
845
|
-
|
|
864
|
+
|
|
865
|
+
// Determine database ID for knowledge store
|
|
866
|
+
let databaseId: string;
|
|
867
|
+
const url = connectionString.toLowerCase();
|
|
868
|
+
|
|
869
|
+
if (url.startsWith('sqlite://') || url.startsWith('sqlite:') || url.endsWith('.sqlite') || url.endsWith('.sqlite3') || url.endsWith('.db') || url === ':memory:') {
|
|
870
|
+
// SQLite: use filename as database ID
|
|
871
|
+
let filePath = connectionString;
|
|
872
|
+
if (url.startsWith('sqlite://')) {
|
|
873
|
+
filePath = connectionString.replace(/^sqlite:\/\//i, '');
|
|
874
|
+
} else if (url.startsWith('sqlite:')) {
|
|
875
|
+
filePath = connectionString.replace(/^sqlite:/i, '');
|
|
876
|
+
}
|
|
877
|
+
const fileName = filePath.split('/').pop() || 'sqlite';
|
|
878
|
+
databaseId = `sqlite_${fileName.replace(/[^a-zA-Z0-9]/g, '_')}`;
|
|
879
|
+
console.log(`[datacontext] Connected to SQLite: ${filePath}`);
|
|
880
|
+
} else {
|
|
881
|
+
// URL-based databases (postgres, mysql)
|
|
882
|
+
const config = parseConnectionString(connectionString);
|
|
883
|
+
databaseId = `${config.host}_${config.database}`;
|
|
884
|
+
console.log(`[datacontext] Connected to ${config.database}`);
|
|
885
|
+
}
|
|
846
886
|
|
|
847
887
|
// Create knowledge store
|
|
848
|
-
const databaseId = `${config.host}_${config.database}`;
|
|
849
888
|
const knowledge = createKnowledgeStore(databaseId);
|
|
850
889
|
await knowledge.load();
|
|
851
890
|
|
|
852
|
-
// Update schema hash
|
|
853
|
-
const
|
|
891
|
+
// Update schema hash (SQLite uses 'main' schema)
|
|
892
|
+
const isSqlite = url.startsWith('sqlite') || url.endsWith('.db') || url.endsWith('.sqlite') || url.endsWith('.sqlite3');
|
|
893
|
+
const schemaName = isSqlite ? 'main' : options.schema;
|
|
894
|
+
const schema = await adapter.getSchema(schemaName);
|
|
854
895
|
knowledge.updateSchemaHash(schema.schemaHash);
|
|
855
896
|
await knowledge.save();
|
|
856
897
|
|
package/test-sqlite.db
ADDED
|
Binary file
|