blackcat.js-database 1.0.0-test → 1.0.1

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/README.md CHANGED
@@ -1,3 +1,415 @@
1
- # 🐈‍⬛ blackcat.js-database
1
+ Một **database nhẹ, typed và hỗ trợ autocomplete path cho TypeScript**.
2
2
 
3
- ## Package Test
3
+ `blackcat.js-database` cho phép bạn lưu trữ và truy vấn dữ liệu bằng **dot notation** với **type inference mạnh mẽ trong IDE**.
4
+
5
+ [Xem tài liệu ở đây](blackcat-js-database.vercel.app)
6
+ ---
7
+
8
+ # Tính năng
9
+
10
+ * Autocomplete path trong IDE (`user.profile.name`)
11
+ * Type-safe với TypeScript
12
+ * Hỗ trợ nested object
13
+ * API tương tự `Array`
14
+ * Driver system (memory, file, custom storage)
15
+ * Query helpers (`find`, `filter`, `map`, ...)
16
+ * Hỗ trợ thao tác với number và array
17
+
18
+ ---
19
+
20
+ # Cài đặt
21
+
22
+ ```bash
23
+ npm install blackcat.js-database
24
+ ```
25
+
26
+ ---
27
+
28
+ # Khởi tạo Database
29
+
30
+ ```ts
31
+ import { Database, JSONDriver } from "blackcat.js-database";
32
+
33
+ const db = new Database({
34
+ driver: db = new JSONDriver({
35
+ filePath: "./database.json"
36
+ })
37
+ });
38
+ ```
39
+
40
+ ---
41
+
42
+ # Sử dụng với TypeScript Schema
43
+
44
+ ```ts
45
+ type Schema = {
46
+ users: {
47
+ id: number;
48
+ name: string;
49
+ coins: number;
50
+ }[];
51
+ settings: {
52
+ prefix: string;
53
+ };
54
+ };
55
+
56
+ const db = new Database<Schema>({
57
+ driver: db = new JSONDriver({
58
+ filePath: "./database.json"
59
+ })
60
+ });
61
+ ```
62
+
63
+ Autocomplete trong IDE:
64
+
65
+ ```
66
+ "users"
67
+ "users.0.id"
68
+ "settings.prefix"
69
+ ```
70
+
71
+ ---
72
+
73
+ # Lấy dữ liệu
74
+
75
+ ```ts
76
+ await db.get("users");
77
+ await db.get("settings.prefix");
78
+ ```
79
+
80
+ Lấy toàn bộ database
81
+
82
+ ```ts
83
+ await db.get();
84
+ ```
85
+
86
+ ---
87
+
88
+ # Kiểm tra key tồn tại
89
+
90
+ ```ts
91
+ await db.has("users");
92
+ ```
93
+
94
+ ---
95
+
96
+ # Gán giá trị
97
+
98
+ ```ts
99
+ await db.set("settings.prefix", "!");
100
+ ```
101
+
102
+ ---
103
+
104
+ # Cập nhật giá trị
105
+
106
+ ```ts
107
+ await db.update("settings.prefix", "?");
108
+ ```
109
+
110
+ ---
111
+
112
+ # Xóa dữ liệu
113
+
114
+ ```ts
115
+ await db.delete("settings.prefix");
116
+ ```
117
+
118
+ Xóa toàn bộ database
119
+
120
+ ```ts
121
+ await db.deleteAll();
122
+ ```
123
+
124
+ ---
125
+
126
+ # Number Operations
127
+
128
+ ## Cộng giá trị
129
+
130
+ ```ts
131
+ await db.add("users.0.coins", 10);
132
+ ```
133
+
134
+ ## Trừ giá trị
135
+
136
+ ```ts
137
+ await db.subtract("users.0.coins", 5);
138
+ ```
139
+
140
+ ---
141
+
142
+ # Array Operations
143
+
144
+ ## Thêm phần tử
145
+
146
+ ```ts
147
+ await db.push("users", {
148
+ id: 1,
149
+ name: "Alice",
150
+ coins: 0
151
+ });
152
+ ```
153
+
154
+ Hoặc
155
+
156
+ ```ts
157
+ await db.push("numbers", 1, 2, 3);
158
+ ```
159
+
160
+ ---
161
+
162
+ ## Thay thế phần tử trong mảng
163
+
164
+ ```ts
165
+ await db.pull("users", 0, {
166
+ id: 2,
167
+ name: "Bob",
168
+ coins: 10
169
+ });
170
+ ```
171
+
172
+ ---
173
+
174
+ ## Xóa phần tử
175
+
176
+ ```ts
177
+ await db.pop("users", 0);
178
+ ```
179
+
180
+ Hoặc
181
+
182
+ ```ts
183
+ await db.pop("users", [0, 2]);
184
+ ```
185
+
186
+ ---
187
+
188
+ ## Lấy phần tử ngẫu nhiên
189
+
190
+ ```ts
191
+ await db.random("users");
192
+ ```
193
+
194
+ ---
195
+
196
+ # Query API
197
+
198
+ Database hỗ trợ các method tương tự `Array`.
199
+
200
+ ## find
201
+
202
+ ```ts
203
+ const user = await db.find((u) => u.id === 1);
204
+ ```
205
+
206
+ ---
207
+
208
+ ## filter
209
+
210
+ ```ts
211
+ const admins = await db.filter((u) => u.role === "admin");
212
+ ```
213
+
214
+ ---
215
+
216
+ ## map
217
+
218
+ ```ts
219
+ const names = await db.map((u) => u.name);
220
+ ```
221
+
222
+ ---
223
+
224
+ ## findIndex
225
+
226
+ ```ts
227
+ const index = await db.findIndex((u) => u.id === 1);
228
+ ```
229
+
230
+ ---
231
+
232
+ ## some
233
+
234
+ ```ts
235
+ await db.some((u) => u.active === true);
236
+ ```
237
+
238
+ ---
239
+
240
+ ## every
241
+
242
+ ```ts
243
+ await db.every((u) => u.active === true);
244
+ ```
245
+
246
+ ---
247
+
248
+ # Utilities
249
+
250
+ ## keys
251
+
252
+ ```ts
253
+ await db.keys();
254
+ await db.keys("users");
255
+ ```
256
+
257
+ ---
258
+
259
+ ## values
260
+
261
+ ```ts
262
+ await db.values();
263
+ await db.values("users");
264
+ ```
265
+
266
+ ---
267
+
268
+ ## size
269
+
270
+ ```ts
271
+ await db.size();
272
+ ```
273
+
274
+ ---
275
+
276
+ ## Kiểm tra kiểu dữ liệu
277
+
278
+ ```ts
279
+ await db.isTargetArray("users");
280
+ await db.isTargetNumber("users.0.coins");
281
+ ```
282
+
283
+ ---
284
+
285
+ # Driver System
286
+
287
+ Database sử dụng **driver system** để lưu trữ dữ liệu.
288
+
289
+ Driver chịu trách nhiệm:
290
+
291
+ * đọc dữ liệu
292
+ * ghi dữ liệu
293
+ * xóa dữ liệu
294
+
295
+ ---
296
+
297
+ # Memory Driver (ví dụ)
298
+
299
+ Driver lưu dữ liệu trong RAM.
300
+
301
+ ```ts
302
+ import { Database, MemoryDriver } from "blackcat.js-database";
303
+
304
+ const db = new Database({
305
+ driver: new MemoryDriver()
306
+ });
307
+ ```
308
+ ---
309
+
310
+ # JSON Driver (ví dụ)
311
+
312
+ ```ts
313
+ import { Database, JSONDriver } from "blackcat.js-database";
314
+
315
+ const database = new Database({
316
+ driver: db = new JSONDriver({
317
+ filePath: "./database.json"
318
+ })
319
+ });
320
+ ```
321
+ ---
322
+
323
+ # Mongo Driver (ví dụ)
324
+
325
+ ```ts
326
+ import { Database, MongoDriver } from "blackcat.js-database";
327
+
328
+ const database = new Database({
329
+ driver: new MongoDriver({
330
+ mongourl: "mongodb://localhost:27017",
331
+ databaseName: "mydb",
332
+ collectionName: "store"
333
+ })
334
+ });
335
+ ```
336
+ ---
337
+
338
+ # SQLite Driver (ví dụ)
339
+
340
+ ```ts
341
+ import { Database, SQLiteDriver } from "blackcat.js-database";
342
+
343
+ const database = new Database({
344
+ driver: new SQLiteDriver({
345
+ filePath: "database.sqlite",
346
+ table: "json_store"
347
+ })
348
+ });
349
+ ```
350
+ ---
351
+
352
+
353
+
354
+ # Tạo Custom Driver
355
+
356
+ Bạn có thể tạo driver riêng bằng cách implement `DatabaseDriver`.
357
+
358
+ ```ts
359
+ import { DatabaseDriver } from "blackcat.js-database";
360
+
361
+ class MyDriver implements DatabaseDriver {
362
+ async all() {
363
+ return {};
364
+ }
365
+
366
+ async set(data) {
367
+ }
368
+
369
+ async delete() {
370
+ }
371
+
372
+ }
373
+ ```
374
+
375
+ Sử dụng:
376
+
377
+ ```ts
378
+ const db = new Database({
379
+ driver: new MyDriver()
380
+ });
381
+ ```
382
+
383
+ ---
384
+
385
+ # Ví dụ hoàn chỉnh
386
+
387
+ ```ts
388
+ import { Database, JSONDriver } from "blackcat.js-database";
389
+
390
+ const db = new Database({
391
+ driver: db = new JSONDriver({
392
+ filePath: "./database.json"
393
+ })
394
+ });
395
+
396
+ await db.set("users", []);
397
+
398
+ await db.push("users", {
399
+ id: 1,
400
+ name: "Alice",
401
+ coins: 100
402
+ });
403
+
404
+ await db.add("users.0.coins", 50);
405
+
406
+ const user = await db.get("users.0");
407
+
408
+ console.log(user);
409
+ ```
410
+
411
+ ---
412
+
413
+ # License
414
+
415
+ MIT