hazo_connect 2.2.0 → 2.3.2
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/LICENSE +21 -0
- package/README.md +563 -0
- package/dist/adapters/sqlite-adapter.d.ts.map +1 -1
- package/dist/adapters/sqlite-adapter.js +37 -2
- package/dist/adapters/sqlite-adapter.js.map +1 -1
- package/dist/factory.d.ts +1 -0
- package/dist/factory.d.ts.map +1 -1
- package/dist/factory.js +51 -9
- package/dist/factory.js.map +1 -1
- package/dist/nextjs/index.d.ts +2 -0
- package/dist/nextjs/index.d.ts.map +1 -1
- package/dist/nextjs/index.js +10 -1
- package/dist/nextjs/index.js.map +1 -1
- package/dist/nextjs/route-setup.d.ts +46 -0
- package/dist/nextjs/route-setup.d.ts.map +1 -0
- package/dist/nextjs/route-setup.js +141 -0
- package/dist/nextjs/route-setup.js.map +1 -0
- package/dist/nextjs/setup-helpers.d.ts +86 -0
- package/dist/nextjs/setup-helpers.d.ts.map +1 -0
- package/dist/nextjs/setup-helpers.js +174 -0
- package/dist/nextjs/setup-helpers.js.map +1 -0
- package/dist/server/index.d.ts +2 -1
- package/dist/server/index.d.ts.map +1 -1
- package/dist/server/index.js +7 -1
- package/dist/server/index.js.map +1 -1
- package/dist/sqlite/admin-service.d.ts +8 -0
- package/dist/sqlite/admin-service.d.ts.map +1 -1
- package/dist/sqlite/admin-service.js +39 -1
- package/dist/sqlite/admin-service.js.map +1 -1
- package/dist/utils/config-validator.d.ts +39 -0
- package/dist/utils/config-validator.d.ts.map +1 -0
- package/dist/utils/config-validator.js +78 -0
- package/dist/utils/config-validator.js.map +1 -0
- package/docs/examples/nextjs-admin-ui-setup.ts +199 -0
- package/docs/examples/nextjs-api-route.ts +205 -0
- package/docs/examples/nextjs-crud-service.ts +257 -0
- package/docs/examples/nextjs-server-component.tsx +123 -0
- package/docs/examples/nextjs-singleton-pattern.ts +166 -0
- package/docs/migration-guide.md +272 -0
- package/docs/nextjs-setup.md +471 -0
- package/docs/techdoc.md +824 -0
- package/docs/troubleshooting.md +442 -0
- package/docs/types.md +490 -0
- package/package.json +16 -4
- package/scripts/postinstall-setup.js +72 -0
- package/scripts/setup-routes.js +123 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2025 pub12
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,563 @@
|
|
|
1
|
+
# Hazo Connect
|
|
2
|
+
|
|
3
|
+
A fully independent database abstraction layer with query builder interface for Node.js and Next.js applications. Supports multiple database backends including PostgreSQL (via PostgREST), SQLite, and Supabase.
|
|
4
|
+
|
|
5
|
+
## Table of Contents
|
|
6
|
+
|
|
7
|
+
- [Features](#features)
|
|
8
|
+
- [Installation](#installation)
|
|
9
|
+
- [Quick Start](#quick-start)
|
|
10
|
+
- [Entry Points](#entry-points)
|
|
11
|
+
- [Usage Examples](#usage-examples)
|
|
12
|
+
- [Basic Query Builder](#basic-query-builder)
|
|
13
|
+
- [CRUD Operations](#crud-operations)
|
|
14
|
+
- [CRUD Service Helper](#crud-service-helper)
|
|
15
|
+
- [Singleton Pattern](#singleton-pattern)
|
|
16
|
+
- [Next.js API Routes](#nextjs-api-routes)
|
|
17
|
+
- [Configuration](#configuration)
|
|
18
|
+
- [SQLite](#sqlite-configuration)
|
|
19
|
+
- [PostgREST](#postgrest-configuration)
|
|
20
|
+
- [Supabase](#supabase-configuration)
|
|
21
|
+
- [Environment Variables](#environment-variables)
|
|
22
|
+
- [Key Interfaces](#key-interfaces)
|
|
23
|
+
- [Services](#services)
|
|
24
|
+
- [SQLite Admin UI](#sqlite-admin-ui)
|
|
25
|
+
- [Supported Operators](#supported-operators)
|
|
26
|
+
- [Server-Side Enforcement](#server-side-enforcement)
|
|
27
|
+
- [Documentation](#documentation)
|
|
28
|
+
|
|
29
|
+
---
|
|
30
|
+
|
|
31
|
+
## Features
|
|
32
|
+
|
|
33
|
+
- **Query Builder API**: Fluent interface supporting full PostgREST syntax
|
|
34
|
+
- **Multiple Adapters**: Support for PostgREST, Supabase, SQLite, and file storage
|
|
35
|
+
- **Server-Side Only**: Enforced server-side usage with runtime guards and Next.js `'use server'` directives
|
|
36
|
+
- **Zero Dependencies**: Core component has no external dependencies (only Node.js built-ins)
|
|
37
|
+
- **Dependency Injection**: Logger and configuration injected, not imported
|
|
38
|
+
- **Type Safe**: Full TypeScript support with comprehensive type definitions
|
|
39
|
+
- **SQLite Admin UI**: Built-in admin interface for browsing and managing SQLite databases
|
|
40
|
+
- **Singleton Pattern**: Built-in support for connection pooling across API routes
|
|
41
|
+
|
|
42
|
+
---
|
|
43
|
+
|
|
44
|
+
## Installation
|
|
45
|
+
|
|
46
|
+
```bash
|
|
47
|
+
npm install hazo_connect
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
### Peer Dependencies (Optional)
|
|
51
|
+
|
|
52
|
+
If you're using the SQLite admin UI, install these peer dependencies:
|
|
53
|
+
|
|
54
|
+
```bash
|
|
55
|
+
npm install next@>=14.0.0 react@>=18.0.0 react-dom@>=18.0.0 lucide-react@^0.553.0 sonner@^2.0.7
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
**Note:** The core library (database adapters and query builder) has no peer dependencies.
|
|
59
|
+
|
|
60
|
+
---
|
|
61
|
+
|
|
62
|
+
## Quick Start
|
|
63
|
+
|
|
64
|
+
### 1. Set Environment Variables
|
|
65
|
+
|
|
66
|
+
```bash
|
|
67
|
+
# .env.local
|
|
68
|
+
HAZO_CONNECT_TYPE=sqlite
|
|
69
|
+
HAZO_CONNECT_SQLITE_PATH=./database.sqlite
|
|
70
|
+
HAZO_CONNECT_ENABLE_ADMIN_UI=true
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
### 2. Use in API Route
|
|
74
|
+
|
|
75
|
+
```typescript
|
|
76
|
+
import { createHazoConnectFromEnv } from 'hazo_connect/nextjs/setup'
|
|
77
|
+
import { QueryBuilder } from 'hazo_connect/server'
|
|
78
|
+
import { NextResponse } from 'next/server'
|
|
79
|
+
|
|
80
|
+
export async function GET() {
|
|
81
|
+
const hazo = createHazoConnectFromEnv()
|
|
82
|
+
const users = await hazo.query(new QueryBuilder().from('users'))
|
|
83
|
+
return NextResponse.json({ data: users })
|
|
84
|
+
}
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
---
|
|
88
|
+
|
|
89
|
+
## Entry Points
|
|
90
|
+
|
|
91
|
+
`hazo_connect` provides multiple entry points for different use cases:
|
|
92
|
+
|
|
93
|
+
| Entry Point | Purpose | Use Case |
|
|
94
|
+
|-------------|---------|----------|
|
|
95
|
+
| `hazo_connect` | Types only | Client components (type imports) |
|
|
96
|
+
| `hazo_connect/server` | Server-side functionality | API routes, Server Components |
|
|
97
|
+
| `hazo_connect/nextjs` | Next.js helpers | API route handlers |
|
|
98
|
+
| `hazo_connect/nextjs/setup` | Setup utilities | Environment-based config, singleton pattern |
|
|
99
|
+
| `hazo_connect/ui` | UI-safe types | Client component type imports |
|
|
100
|
+
|
|
101
|
+
### Import Examples
|
|
102
|
+
|
|
103
|
+
```typescript
|
|
104
|
+
// Server-side code (API routes, Server Components)
|
|
105
|
+
import { createHazoConnect, QueryBuilder, createCrudService } from 'hazo_connect/server'
|
|
106
|
+
|
|
107
|
+
// Next.js setup helpers
|
|
108
|
+
import { createHazoConnectFromEnv, getHazoConnectSingleton } from 'hazo_connect/nextjs/setup'
|
|
109
|
+
|
|
110
|
+
// API route handlers
|
|
111
|
+
import { createApiRouteHandler, getServerHazoConnect } from 'hazo_connect/nextjs'
|
|
112
|
+
|
|
113
|
+
// Client component types only
|
|
114
|
+
import type { HazoConnectConfig, TableSummary } from 'hazo_connect/ui'
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
---
|
|
118
|
+
|
|
119
|
+
## Usage Examples
|
|
120
|
+
|
|
121
|
+
### Basic Query Builder
|
|
122
|
+
|
|
123
|
+
```typescript
|
|
124
|
+
import { createHazoConnect, QueryBuilder } from 'hazo_connect/server'
|
|
125
|
+
|
|
126
|
+
const hazo = createHazoConnect({
|
|
127
|
+
type: 'sqlite',
|
|
128
|
+
sqlite: { database_path: './database.sqlite' }
|
|
129
|
+
})
|
|
130
|
+
|
|
131
|
+
// Simple select
|
|
132
|
+
const users = await hazo.query(
|
|
133
|
+
new QueryBuilder()
|
|
134
|
+
.from('users')
|
|
135
|
+
.select(['id', 'name', 'email'])
|
|
136
|
+
)
|
|
137
|
+
|
|
138
|
+
// With filters
|
|
139
|
+
const user = await hazo.query(
|
|
140
|
+
new QueryBuilder()
|
|
141
|
+
.from('users')
|
|
142
|
+
.where('id', 'eq', '123')
|
|
143
|
+
)
|
|
144
|
+
|
|
145
|
+
// With ordering and pagination
|
|
146
|
+
const paginatedUsers = await hazo.query(
|
|
147
|
+
new QueryBuilder()
|
|
148
|
+
.from('users')
|
|
149
|
+
.order('created_at', 'desc')
|
|
150
|
+
.limit(10)
|
|
151
|
+
.offset(20)
|
|
152
|
+
)
|
|
153
|
+
|
|
154
|
+
// Multiple conditions
|
|
155
|
+
const activeAdmins = await hazo.query(
|
|
156
|
+
new QueryBuilder()
|
|
157
|
+
.from('users')
|
|
158
|
+
.where('status', 'eq', 'active')
|
|
159
|
+
.where('role', 'eq', 'admin')
|
|
160
|
+
)
|
|
161
|
+
|
|
162
|
+
// Nested selects (PostgREST)
|
|
163
|
+
const pagesWithImages = await hazo.query(
|
|
164
|
+
new QueryBuilder()
|
|
165
|
+
.from('template_pages')
|
|
166
|
+
.nestedSelect('images', ['id', 'filename'])
|
|
167
|
+
)
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
### CRUD Operations
|
|
171
|
+
|
|
172
|
+
```typescript
|
|
173
|
+
// CREATE - Insert a record
|
|
174
|
+
const newUser = await hazo.query(
|
|
175
|
+
new QueryBuilder().from('users'),
|
|
176
|
+
'POST',
|
|
177
|
+
{ name: 'John Doe', email: 'john@example.com' }
|
|
178
|
+
)
|
|
179
|
+
|
|
180
|
+
// READ - Select records
|
|
181
|
+
const users = await hazo.query(
|
|
182
|
+
new QueryBuilder().from('users').where('status', 'eq', 'active')
|
|
183
|
+
)
|
|
184
|
+
|
|
185
|
+
// UPDATE - Uses 'PATCH' method (not 'update')
|
|
186
|
+
const updated = await hazo.query(
|
|
187
|
+
new QueryBuilder()
|
|
188
|
+
.from('users')
|
|
189
|
+
.where('id', 'eq', '123'),
|
|
190
|
+
'PATCH',
|
|
191
|
+
{ name: 'Jane Doe', email: 'jane@example.com' }
|
|
192
|
+
)
|
|
193
|
+
|
|
194
|
+
// DELETE - Uses 'DELETE' method (not 'delete')
|
|
195
|
+
await hazo.query(
|
|
196
|
+
new QueryBuilder()
|
|
197
|
+
.from('users')
|
|
198
|
+
.where('id', 'eq', '123'),
|
|
199
|
+
'DELETE'
|
|
200
|
+
)
|
|
201
|
+
```
|
|
202
|
+
|
|
203
|
+
**Important:**
|
|
204
|
+
- Updates use `PATCH` method, not `update()`
|
|
205
|
+
- Deletes use `DELETE` method, not `delete()`
|
|
206
|
+
- Always use `.where()` to specify which rows to update/delete
|
|
207
|
+
|
|
208
|
+
### CRUD Service Helper
|
|
209
|
+
|
|
210
|
+
For simpler CRUD operations, use the `createCrudService` helper:
|
|
211
|
+
|
|
212
|
+
```typescript
|
|
213
|
+
import { createHazoConnect, createCrudService } from 'hazo_connect/server'
|
|
214
|
+
|
|
215
|
+
const hazo = createHazoConnect({ type: 'sqlite', sqlite: { database_path: './db.sqlite' } })
|
|
216
|
+
const userService = createCrudService(hazo, 'users')
|
|
217
|
+
|
|
218
|
+
// List all records
|
|
219
|
+
const allUsers = await userService.list()
|
|
220
|
+
|
|
221
|
+
// Find by ID
|
|
222
|
+
const user = await userService.findById('123')
|
|
223
|
+
|
|
224
|
+
// Find by criteria
|
|
225
|
+
const admins = await userService.findBy({ role: 'admin' })
|
|
226
|
+
|
|
227
|
+
// Insert
|
|
228
|
+
const newUser = await userService.insert({ name: 'John', email: 'john@example.com' })
|
|
229
|
+
|
|
230
|
+
// Update by ID - method is updateById() (not update())
|
|
231
|
+
await userService.updateById('123', { name: 'Jane' })
|
|
232
|
+
|
|
233
|
+
// Delete by ID - method is deleteById() (not delete())
|
|
234
|
+
await userService.deleteById('123')
|
|
235
|
+
|
|
236
|
+
// Custom query
|
|
237
|
+
const customQuery = userService.query()
|
|
238
|
+
.where('status', 'eq', 'active')
|
|
239
|
+
.order('created_at', 'desc')
|
|
240
|
+
.limit(5)
|
|
241
|
+
const result = await customQuery.execute('GET')
|
|
242
|
+
```
|
|
243
|
+
|
|
244
|
+
### Singleton Pattern
|
|
245
|
+
|
|
246
|
+
For multiple API routes sharing a database connection:
|
|
247
|
+
|
|
248
|
+
```typescript
|
|
249
|
+
// lib/hazo_connect.ts
|
|
250
|
+
import { getHazoConnectSingleton } from 'hazo_connect/nextjs/setup'
|
|
251
|
+
|
|
252
|
+
export const hazo = getHazoConnectSingleton({
|
|
253
|
+
enableAdminUi: true
|
|
254
|
+
})
|
|
255
|
+
```
|
|
256
|
+
|
|
257
|
+
```typescript
|
|
258
|
+
// app/api/users/route.ts
|
|
259
|
+
import { hazo } from '@/lib/hazo_connect'
|
|
260
|
+
import { QueryBuilder } from 'hazo_connect/server'
|
|
261
|
+
import { NextResponse } from 'next/server'
|
|
262
|
+
|
|
263
|
+
export async function GET() {
|
|
264
|
+
const users = await hazo.query(new QueryBuilder().from('users'))
|
|
265
|
+
return NextResponse.json({ data: users })
|
|
266
|
+
}
|
|
267
|
+
```
|
|
268
|
+
|
|
269
|
+
### Next.js API Routes
|
|
270
|
+
|
|
271
|
+
#### Using createApiRouteHandler
|
|
272
|
+
|
|
273
|
+
```typescript
|
|
274
|
+
import { createApiRouteHandler } from 'hazo_connect/nextjs'
|
|
275
|
+
import { QueryBuilder } from 'hazo_connect/server'
|
|
276
|
+
import { NextResponse } from 'next/server'
|
|
277
|
+
|
|
278
|
+
export const GET = createApiRouteHandler(
|
|
279
|
+
async (hazo, request) => {
|
|
280
|
+
const users = await hazo.query(
|
|
281
|
+
new QueryBuilder().from('users').select('*')
|
|
282
|
+
)
|
|
283
|
+
return NextResponse.json({ data: users })
|
|
284
|
+
},
|
|
285
|
+
{
|
|
286
|
+
config: {
|
|
287
|
+
type: 'sqlite',
|
|
288
|
+
sqlite: { database_path: './database.sqlite' }
|
|
289
|
+
}
|
|
290
|
+
}
|
|
291
|
+
)
|
|
292
|
+
```
|
|
293
|
+
|
|
294
|
+
#### Using getServerHazoConnect
|
|
295
|
+
|
|
296
|
+
```typescript
|
|
297
|
+
import { getServerHazoConnect } from 'hazo_connect/nextjs'
|
|
298
|
+
import { QueryBuilder } from 'hazo_connect/server'
|
|
299
|
+
import { NextResponse } from 'next/server'
|
|
300
|
+
|
|
301
|
+
export async function GET() {
|
|
302
|
+
const hazo = getServerHazoConnect({
|
|
303
|
+
type: 'sqlite',
|
|
304
|
+
sqlite: { database_path: './database.sqlite' }
|
|
305
|
+
})
|
|
306
|
+
|
|
307
|
+
const users = await hazo.query(
|
|
308
|
+
new QueryBuilder().from('users').select('*')
|
|
309
|
+
)
|
|
310
|
+
|
|
311
|
+
return NextResponse.json({ data: users })
|
|
312
|
+
}
|
|
313
|
+
```
|
|
314
|
+
|
|
315
|
+
---
|
|
316
|
+
|
|
317
|
+
## Configuration
|
|
318
|
+
|
|
319
|
+
### SQLite Configuration
|
|
320
|
+
|
|
321
|
+
```typescript
|
|
322
|
+
import { createHazoConnect } from 'hazo_connect/server'
|
|
323
|
+
|
|
324
|
+
const hazo = createHazoConnect({
|
|
325
|
+
type: 'sqlite',
|
|
326
|
+
enable_admin_ui: true, // Enable admin UI (default: false)
|
|
327
|
+
sqlite: {
|
|
328
|
+
database_path: '/path/to/database.db', // Optional - in-memory when omitted
|
|
329
|
+
read_only: false, // Prevent writes when true
|
|
330
|
+
initial_sql: [ // Optional seed statements
|
|
331
|
+
`CREATE TABLE IF NOT EXISTS users (id INTEGER PRIMARY KEY, name TEXT);`
|
|
332
|
+
],
|
|
333
|
+
wasm_directory: '/path/to/sql.js/dist' // Optional WASM override
|
|
334
|
+
}
|
|
335
|
+
})
|
|
336
|
+
```
|
|
337
|
+
|
|
338
|
+
### PostgREST Configuration
|
|
339
|
+
|
|
340
|
+
```typescript
|
|
341
|
+
const hazo = createHazoConnect({
|
|
342
|
+
type: 'postgrest',
|
|
343
|
+
postgrest: {
|
|
344
|
+
base_url: 'http://localhost:3000',
|
|
345
|
+
api_key: 'your-api-key'
|
|
346
|
+
}
|
|
347
|
+
})
|
|
348
|
+
```
|
|
349
|
+
|
|
350
|
+
### Supabase Configuration
|
|
351
|
+
|
|
352
|
+
```typescript
|
|
353
|
+
const hazo = createHazoConnect({
|
|
354
|
+
type: 'supabase',
|
|
355
|
+
supabase: {
|
|
356
|
+
url: 'https://your-project.supabase.co',
|
|
357
|
+
anon_key: 'your-anon-key',
|
|
358
|
+
service_role_key: 'your-service-role-key' // Optional
|
|
359
|
+
}
|
|
360
|
+
})
|
|
361
|
+
```
|
|
362
|
+
|
|
363
|
+
### Environment Variables
|
|
364
|
+
|
|
365
|
+
| Variable | Description | Default |
|
|
366
|
+
|----------|-------------|---------|
|
|
367
|
+
| `HAZO_CONNECT_TYPE` | Database type (`sqlite`, `postgrest`, `supabase`) | `sqlite` |
|
|
368
|
+
| `HAZO_CONNECT_SQLITE_PATH` | Path to SQLite database file | `./database.sqlite` |
|
|
369
|
+
| `HAZO_CONNECT_SQLITE_READONLY` | Enable read-only mode | `false` |
|
|
370
|
+
| `HAZO_CONNECT_SQLITE_WASM_DIR` | Path to sql-wasm.wasm directory | Auto-detected |
|
|
371
|
+
| `HAZO_CONNECT_ENABLE_ADMIN_UI` | Enable SQLite admin UI | `false` |
|
|
372
|
+
| `POSTGREST_URL` | PostgREST base URL | - |
|
|
373
|
+
| `POSTGREST_API_KEY` | PostgREST API key | - |
|
|
374
|
+
|
|
375
|
+
---
|
|
376
|
+
|
|
377
|
+
## Key Interfaces
|
|
378
|
+
|
|
379
|
+
### HazoConnectConfig
|
|
380
|
+
|
|
381
|
+
Main configuration interface:
|
|
382
|
+
|
|
383
|
+
```typescript
|
|
384
|
+
interface HazoConnectConfig {
|
|
385
|
+
type: 'postgrest' | 'supabase' | 'sqlite' | 'file'
|
|
386
|
+
logger?: Logger
|
|
387
|
+
enable_admin_ui?: boolean // SQLite only
|
|
388
|
+
postgrest?: { base_url: string; api_key: string }
|
|
389
|
+
supabase?: { url: string; anon_key: string; service_role_key?: string }
|
|
390
|
+
sqlite?: { database_path?: string; read_only?: boolean; initial_sql?: string[]; wasm_directory?: string }
|
|
391
|
+
file?: { base_path: string; file_format: string }
|
|
392
|
+
}
|
|
393
|
+
```
|
|
394
|
+
|
|
395
|
+
### HazoConnectAdapter
|
|
396
|
+
|
|
397
|
+
Database adapter interface:
|
|
398
|
+
|
|
399
|
+
```typescript
|
|
400
|
+
interface HazoConnectAdapter {
|
|
401
|
+
query(builder: QueryBuilder, method?: 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE', body?: any): Promise<any>
|
|
402
|
+
rawQuery(endpoint: string, options?: RequestInit): Promise<any>
|
|
403
|
+
getConfig(): Promise<any>
|
|
404
|
+
}
|
|
405
|
+
```
|
|
406
|
+
|
|
407
|
+
### Logger
|
|
408
|
+
|
|
409
|
+
Optional logger interface:
|
|
410
|
+
|
|
411
|
+
```typescript
|
|
412
|
+
interface Logger {
|
|
413
|
+
debug(message: string, data?: Record<string, unknown>): void
|
|
414
|
+
info(message: string, data?: Record<string, unknown>): void
|
|
415
|
+
warn(message: string, data?: Record<string, unknown>): void
|
|
416
|
+
error(message: string, data?: Record<string, unknown>): void
|
|
417
|
+
}
|
|
418
|
+
```
|
|
419
|
+
|
|
420
|
+
### CrudService
|
|
421
|
+
|
|
422
|
+
CRUD service interface:
|
|
423
|
+
|
|
424
|
+
```typescript
|
|
425
|
+
interface CrudService<T> {
|
|
426
|
+
list(configure?: (qb: QueryBuilder) => QueryBuilder): Promise<T[]>
|
|
427
|
+
findBy(criteria: Record<string, unknown>): Promise<T[]>
|
|
428
|
+
findOneBy(criteria: Record<string, unknown>): Promise<T | null>
|
|
429
|
+
findById(id: unknown): Promise<T | null>
|
|
430
|
+
insert(data: Partial<T> | Partial<T>[]): Promise<T[]>
|
|
431
|
+
updateById(id: unknown, patch: Partial<T>): Promise<T[]>
|
|
432
|
+
deleteById(id: unknown): Promise<void>
|
|
433
|
+
query(): ExecutableQueryBuilder
|
|
434
|
+
}
|
|
435
|
+
```
|
|
436
|
+
|
|
437
|
+
---
|
|
438
|
+
|
|
439
|
+
## Services
|
|
440
|
+
|
|
441
|
+
### SQLite Admin Service
|
|
442
|
+
|
|
443
|
+
Provides admin functionality for SQLite databases:
|
|
444
|
+
|
|
445
|
+
```typescript
|
|
446
|
+
import { getSqliteAdminService } from 'hazo_connect/server'
|
|
447
|
+
|
|
448
|
+
const adminService = getSqliteAdminService()
|
|
449
|
+
|
|
450
|
+
// List all tables
|
|
451
|
+
const tables = await adminService.listTables()
|
|
452
|
+
|
|
453
|
+
// Get table schema
|
|
454
|
+
const schema = await adminService.getTableSchema('users')
|
|
455
|
+
|
|
456
|
+
// Get table data with pagination and filtering
|
|
457
|
+
const data = await adminService.getTableData('users', {
|
|
458
|
+
limit: 20,
|
|
459
|
+
offset: 0,
|
|
460
|
+
order_by: 'created_at',
|
|
461
|
+
order_direction: 'desc',
|
|
462
|
+
filters: [{ column: 'status', operator: 'eq', value: 'active' }]
|
|
463
|
+
})
|
|
464
|
+
|
|
465
|
+
// Insert row
|
|
466
|
+
await adminService.insertRow('users', { name: 'John', email: 'john@example.com' })
|
|
467
|
+
|
|
468
|
+
// Update rows
|
|
469
|
+
await adminService.updateRows('users', { id: 1 }, { name: 'Jane' })
|
|
470
|
+
|
|
471
|
+
// Delete rows
|
|
472
|
+
await adminService.deleteRows('users', { id: 1 })
|
|
473
|
+
```
|
|
474
|
+
|
|
475
|
+
---
|
|
476
|
+
|
|
477
|
+
## SQLite Admin UI
|
|
478
|
+
|
|
479
|
+
A built-in web interface for browsing and managing SQLite databases.
|
|
480
|
+
|
|
481
|
+
### Enable Admin UI
|
|
482
|
+
|
|
483
|
+
```typescript
|
|
484
|
+
const hazo = createHazoConnect({
|
|
485
|
+
type: 'sqlite',
|
|
486
|
+
enable_admin_ui: true,
|
|
487
|
+
sqlite: { database_path: './database.sqlite' }
|
|
488
|
+
})
|
|
489
|
+
```
|
|
490
|
+
|
|
491
|
+
Or via environment variable:
|
|
492
|
+
|
|
493
|
+
```bash
|
|
494
|
+
HAZO_CONNECT_ENABLE_ADMIN_UI=true
|
|
495
|
+
```
|
|
496
|
+
|
|
497
|
+
### Access Routes
|
|
498
|
+
|
|
499
|
+
- **UI**: `/hazo_connect/sqlite_admin`
|
|
500
|
+
- **API**: `/hazo_connect/api/sqlite/*`
|
|
501
|
+
|
|
502
|
+
### API Endpoints
|
|
503
|
+
|
|
504
|
+
| Endpoint | Method | Description |
|
|
505
|
+
|----------|--------|-------------|
|
|
506
|
+
| `/hazo_connect/api/sqlite/tables` | GET | List all tables |
|
|
507
|
+
| `/hazo_connect/api/sqlite/schema?table=users` | GET | Get table schema |
|
|
508
|
+
| `/hazo_connect/api/sqlite/data?table=users&limit=20` | GET | Get table data |
|
|
509
|
+
| `/hazo_connect/api/sqlite/data` | POST | Insert row |
|
|
510
|
+
| `/hazo_connect/api/sqlite/data` | PATCH | Update rows |
|
|
511
|
+
| `/hazo_connect/api/sqlite/data` | DELETE | Delete rows |
|
|
512
|
+
|
|
513
|
+
---
|
|
514
|
+
|
|
515
|
+
## Supported Operators
|
|
516
|
+
|
|
517
|
+
| Operator | Description | Example |
|
|
518
|
+
|----------|-------------|---------|
|
|
519
|
+
| `eq` | Equals | `.where('status', 'eq', 'active')` |
|
|
520
|
+
| `neq` | Not equals | `.where('status', 'neq', 'deleted')` |
|
|
521
|
+
| `gt` | Greater than | `.where('age', 'gt', 18)` |
|
|
522
|
+
| `gte` | Greater than or equal | `.where('age', 'gte', 18)` |
|
|
523
|
+
| `lt` | Less than | `.where('age', 'lt', 65)` |
|
|
524
|
+
| `lte` | Less than or equal | `.where('age', 'lte', 65)` |
|
|
525
|
+
| `like` | Like (case-sensitive) | `.where('name', 'like', '%John%')` |
|
|
526
|
+
| `ilike` | Like (case-insensitive) | `.where('name', 'ilike', '%john%')` |
|
|
527
|
+
| `in` | In array | `.whereIn('status', ['active', 'pending'])` |
|
|
528
|
+
| `is` | Is null/not null | `.where('deleted_at', 'is', null)` |
|
|
529
|
+
| `or` | Or condition | `.whereOr([...conditions])` |
|
|
530
|
+
|
|
531
|
+
---
|
|
532
|
+
|
|
533
|
+
## Server-Side Enforcement
|
|
534
|
+
|
|
535
|
+
`hazo_connect` is designed for server-side use only. The library uses:
|
|
536
|
+
|
|
537
|
+
- Next.js `'use server'` directives
|
|
538
|
+
- Runtime guards that check for browser environment
|
|
539
|
+
- Separate entry points to prevent accidental client-side usage
|
|
540
|
+
|
|
541
|
+
If you try to use server-side code in a client component, you'll get a clear error message:
|
|
542
|
+
|
|
543
|
+
```
|
|
544
|
+
Error: hazo_connect/server can only be used on the server.
|
|
545
|
+
For client-side usage, import types from "hazo_connect" or "hazo_connect/ui".
|
|
546
|
+
```
|
|
547
|
+
|
|
548
|
+
---
|
|
549
|
+
|
|
550
|
+
## Documentation
|
|
551
|
+
|
|
552
|
+
- **[Next.js Setup Guide](./docs/nextjs-setup.md)** - Complete Next.js configuration and setup
|
|
553
|
+
- **[Troubleshooting Guide](./docs/troubleshooting.md)** - Common issues and solutions
|
|
554
|
+
- **[Code Examples](./docs/examples/)** - Working examples for common patterns
|
|
555
|
+
- **[Migration Guide](./docs/migration-guide.md)** - Migrating from older code
|
|
556
|
+
- **[Types Reference](./docs/types.md)** - Complete type definitions
|
|
557
|
+
|
|
558
|
+
---
|
|
559
|
+
|
|
560
|
+
## License
|
|
561
|
+
|
|
562
|
+
MIT © Pubs Abayasiri
|
|
563
|
+
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sqlite-adapter.d.ts","sourceRoot":"","sources":["../../src/lib/adapters/sqlite-adapter.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAQH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,EAAE,MAAM,UAAU,CAAA;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAA;AAoB/C,qBAAa,aAAc,SAAQ,WAAY,YAAW,kBAAkB;IAC1E,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAsB;IACnD,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAS;IACxC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAQ;IACtC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAsB;IACnD,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAwB;IACxD,OAAO,CAAC,UAAU,CAAC,CAAe;IAClC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAQ;gBAE1B,MAAM,EAAE,GAAG,EAAE,MAAM,CAAC,EAAE,MAAM;IAmBlC,KAAK,CACT,OAAO,EAAE,YAAY,EACrB,MAAM,GAAE,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,OAAO,GAAG,QAAgB,EAC3D,IAAI,CAAC,EAAE,OAAO,GACb,OAAO,CAAC,GAAG,CAAC;IA4BT,QAAQ,CACZ,GAAG,EAAE,MAAM,EACX,OAAO,GAAE,WAAW,GAAG;QAAE,MAAM,CAAC,EAAE,OAAO,EAAE,CAAA;KAAO,GACjD,OAAO,CAAC,GAAG,CAAC;IA4BT,SAAS,IAAI,OAAO,CAAC,GAAG,CAAC;YAMjB,aAAa;YAcb,aAAa;YAmBb,aAAa;YAoBb,aAAa;IAiB3B,OAAO,CAAC,eAAe;IAkBvB,OAAO,CAAC,SAAS;YAKH,kBAAkB;YAmClB,WAAW;IAWzB,OAAO,CAAC,iBAAiB;IAUzB,OAAO,CAAC,gBAAgB;YAsBV,eAAe;
|
|
1
|
+
{"version":3,"file":"sqlite-adapter.d.ts","sourceRoot":"","sources":["../../src/lib/adapters/sqlite-adapter.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAQH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,EAAE,MAAM,UAAU,CAAA;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAA;AAoB/C,qBAAa,aAAc,SAAQ,WAAY,YAAW,kBAAkB;IAC1E,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAsB;IACnD,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAS;IACxC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAQ;IACtC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAsB;IACnD,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAwB;IACxD,OAAO,CAAC,UAAU,CAAC,CAAe;IAClC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAQ;gBAE1B,MAAM,EAAE,GAAG,EAAE,MAAM,CAAC,EAAE,MAAM;IAmBlC,KAAK,CACT,OAAO,EAAE,YAAY,EACrB,MAAM,GAAE,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,OAAO,GAAG,QAAgB,EAC3D,IAAI,CAAC,EAAE,OAAO,GACb,OAAO,CAAC,GAAG,CAAC;IA4BT,QAAQ,CACZ,GAAG,EAAE,MAAM,EACX,OAAO,GAAE,WAAW,GAAG;QAAE,MAAM,CAAC,EAAE,OAAO,EAAE,CAAA;KAAO,GACjD,OAAO,CAAC,GAAG,CAAC;IA4BT,SAAS,IAAI,OAAO,CAAC,GAAG,CAAC;YAMjB,aAAa;YAcb,aAAa;YAmBb,aAAa;YAoBb,aAAa;IAiB3B,OAAO,CAAC,eAAe;IAkBvB,OAAO,CAAC,SAAS;YAKH,kBAAkB;YAmClB,WAAW;IAWzB,OAAO,CAAC,iBAAiB;IAUzB,OAAO,CAAC,gBAAgB;YAsBV,eAAe;IA+C7B,OAAO,CAAC,cAAc;IAWtB,OAAO,CAAC,mBAAmB;IAyB3B,OAAO,CAAC,mBAAmB;IAa3B,OAAO,CAAC,kBAAkB;IAY1B,OAAO,CAAC,aAAa;IAKrB,OAAO,CAAC,qBAAqB;IAW7B,OAAO,CAAC,iBAAiB;CAY1B"}
|
|
@@ -216,9 +216,44 @@ class SqliteAdapter extends base_adapter_1.BaseAdapter {
|
|
|
216
216
|
if (!this.databasePath || this.isReadOnlyMode) {
|
|
217
217
|
return;
|
|
218
218
|
}
|
|
219
|
+
// Skip persistence for in-memory databases (indicated by :memory: or empty path)
|
|
220
|
+
if (this.databasePath === ":memory:" || !this.databasePath.trim()) {
|
|
221
|
+
return;
|
|
222
|
+
}
|
|
219
223
|
const data = database.export();
|
|
220
|
-
|
|
221
|
-
|
|
224
|
+
const dirPath = path_1.default.dirname(this.databasePath);
|
|
225
|
+
// Skip persistence if trying to write to root-level directories (likely a misconfiguration)
|
|
226
|
+
// This prevents errors when environment variables point to invalid paths like /tests
|
|
227
|
+
if (path_1.default.isAbsolute(dirPath) && dirPath.split(path_1.default.sep).filter(Boolean).length === 1) {
|
|
228
|
+
// Path like /tests, /var, etc. - skip persistence to avoid permission errors
|
|
229
|
+
this.logger?.warn(`Skipping database persistence: invalid root-level path ${this.databasePath}`);
|
|
230
|
+
return;
|
|
231
|
+
}
|
|
232
|
+
// Only create directory if it's not the root directory
|
|
233
|
+
if (dirPath && dirPath !== "/" && dirPath !== "." && dirPath !== path_1.default.sep) {
|
|
234
|
+
try {
|
|
235
|
+
await fs_1.default.promises.mkdir(dirPath, { recursive: true });
|
|
236
|
+
}
|
|
237
|
+
catch (error) {
|
|
238
|
+
// If it's a permission error or the path is invalid, skip persistence
|
|
239
|
+
if (error.code === "EACCES" || error.code === "EROFS" || error.code === "ENOENT") {
|
|
240
|
+
this.logger?.warn(`Cannot create directory ${dirPath}: ${error.message}. Skipping persistence.`);
|
|
241
|
+
return;
|
|
242
|
+
}
|
|
243
|
+
throw error;
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
try {
|
|
247
|
+
await fs_1.default.promises.writeFile(this.databasePath, Buffer.from(data));
|
|
248
|
+
}
|
|
249
|
+
catch (error) {
|
|
250
|
+
// If write fails due to permissions or invalid path, log and continue
|
|
251
|
+
if (error.code === "EACCES" || error.code === "EROFS" || error.code === "ENOENT") {
|
|
252
|
+
this.logger?.warn(`Cannot write database file ${this.databasePath}: ${error.message}. Skipping persistence.`);
|
|
253
|
+
return;
|
|
254
|
+
}
|
|
255
|
+
throw error;
|
|
256
|
+
}
|
|
222
257
|
}
|
|
223
258
|
ensureWritable() {
|
|
224
259
|
if (this.isReadOnlyMode) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sqlite-adapter.js","sourceRoot":"","sources":["../../src/lib/adapters/sqlite-adapter.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"sqlite-adapter.js","sourceRoot":"","sources":["../../src/lib/adapters/sqlite-adapter.ts"],"names":[],"mappings":"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"}
|