@scalix-world/sdk 0.0.1 → 1.0.0

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.
Files changed (67) hide show
  1. package/README.md +215 -1
  2. package/dist/client.d.ts +41 -0
  3. package/dist/client.d.ts.map +1 -0
  4. package/dist/client.js +54 -0
  5. package/dist/client.js.map +1 -0
  6. package/dist/config.d.ts +8 -0
  7. package/dist/config.d.ts.map +1 -0
  8. package/dist/config.js +22 -0
  9. package/dist/config.js.map +1 -0
  10. package/dist/errors.d.ts +15 -0
  11. package/dist/errors.d.ts.map +1 -0
  12. package/dist/errors.js +23 -0
  13. package/dist/errors.js.map +1 -0
  14. package/dist/index.d.ts +23 -0
  15. package/dist/index.d.ts.map +1 -0
  16. package/dist/index.js +21 -0
  17. package/dist/index.js.map +1 -0
  18. package/dist/services/account.d.ts +15 -0
  19. package/dist/services/account.d.ts.map +1 -0
  20. package/dist/services/account.js +30 -0
  21. package/dist/services/account.js.map +1 -0
  22. package/dist/services/audio.d.ts +27 -0
  23. package/dist/services/audio.d.ts.map +1 -0
  24. package/dist/services/audio.js +22 -0
  25. package/dist/services/audio.js.map +1 -0
  26. package/dist/services/base.d.ts +15 -0
  27. package/dist/services/base.d.ts.map +1 -0
  28. package/dist/services/base.js +67 -0
  29. package/dist/services/base.js.map +1 -0
  30. package/dist/services/chat.d.ts +38 -0
  31. package/dist/services/chat.d.ts.map +1 -0
  32. package/dist/services/chat.js +53 -0
  33. package/dist/services/chat.js.map +1 -0
  34. package/dist/services/database.d.ts +245 -0
  35. package/dist/services/database.d.ts.map +1 -0
  36. package/dist/services/database.js +195 -0
  37. package/dist/services/database.js.map +1 -0
  38. package/dist/services/docgen.d.ts +57 -0
  39. package/dist/services/docgen.d.ts.map +1 -0
  40. package/dist/services/docgen.js +38 -0
  41. package/dist/services/docgen.js.map +1 -0
  42. package/dist/services/images.d.ts +34 -0
  43. package/dist/services/images.d.ts.map +1 -0
  44. package/dist/services/images.js +23 -0
  45. package/dist/services/images.js.map +1 -0
  46. package/dist/services/index.d.ts +21 -0
  47. package/dist/services/index.d.ts.map +1 -0
  48. package/dist/services/index.js +12 -0
  49. package/dist/services/index.js.map +1 -0
  50. package/dist/services/rag.d.ts +43 -0
  51. package/dist/services/rag.d.ts.map +1 -0
  52. package/dist/services/rag.js +20 -0
  53. package/dist/services/rag.js.map +1 -0
  54. package/dist/services/research.d.ts +23 -0
  55. package/dist/services/research.d.ts.map +1 -0
  56. package/dist/services/research.js +15 -0
  57. package/dist/services/research.js.map +1 -0
  58. package/dist/services/storage.d.ts +9 -0
  59. package/dist/services/storage.d.ts.map +1 -0
  60. package/dist/services/storage.js +9 -0
  61. package/dist/services/storage.js.map +1 -0
  62. package/dist/services/text.d.ts +30 -0
  63. package/dist/services/text.d.ts.map +1 -0
  64. package/dist/services/text.js +23 -0
  65. package/dist/services/text.js.map +1 -0
  66. package/package.json +51 -5
  67. package/index.js +0 -1
@@ -0,0 +1,67 @@
1
+ import { getConfig } from '../config.js';
2
+ import { AuthenticationError, ScalixError } from '../errors.js';
3
+ export class BaseService {
4
+ config;
5
+ constructor(config) {
6
+ this.config = config ?? getConfig();
7
+ }
8
+ async request(method, path, options) {
9
+ if (!this.config.apiKey) {
10
+ throw new AuthenticationError('API key required. Call configure({ apiKey: "..." }) first.');
11
+ }
12
+ const url = `${this.config.baseUrl}${path}`;
13
+ const headers = {
14
+ Authorization: `Bearer ${this.config.apiKey}`,
15
+ 'Content-Type': 'application/json',
16
+ ...options?.headers,
17
+ };
18
+ const resp = await fetch(url, {
19
+ method,
20
+ headers,
21
+ ...(options?.body ? { body: JSON.stringify(options.body) } : {}),
22
+ });
23
+ if (!resp.ok) {
24
+ const body = await resp.json().catch(() => ({}));
25
+ throw new ScalixError(body?.error?.message ?? `Request failed: ${resp.status}`, { code: body?.error?.code });
26
+ }
27
+ return resp.json();
28
+ }
29
+ async requestRaw(method, path, options) {
30
+ if (!this.config.apiKey) {
31
+ throw new AuthenticationError('API key required.');
32
+ }
33
+ const url = `${this.config.baseUrl}${path}`;
34
+ const headers = {
35
+ Authorization: `Bearer ${this.config.apiKey}`,
36
+ 'Content-Type': 'application/json',
37
+ ...options?.headers,
38
+ };
39
+ const resp = await fetch(url, {
40
+ method,
41
+ headers,
42
+ ...(options?.body ? { body: JSON.stringify(options.body) } : {}),
43
+ });
44
+ if (!resp.ok) {
45
+ const body = await resp.json().catch(() => ({}));
46
+ throw new ScalixError(body?.error?.message ?? `Request failed: ${resp.status}`, { code: body?.error?.code });
47
+ }
48
+ return resp;
49
+ }
50
+ async requestMultipart(path, formData) {
51
+ if (!this.config.apiKey) {
52
+ throw new AuthenticationError('API key required.');
53
+ }
54
+ const url = `${this.config.baseUrl}${path}`;
55
+ const resp = await fetch(url, {
56
+ method: 'POST',
57
+ headers: { Authorization: `Bearer ${this.config.apiKey}` },
58
+ body: formData,
59
+ });
60
+ if (!resp.ok) {
61
+ const body = await resp.json().catch(() => ({}));
62
+ throw new ScalixError(body?.error?.message ?? `Upload failed: ${resp.status}`, { code: body?.error?.code });
63
+ }
64
+ return resp.json();
65
+ }
66
+ }
67
+ //# sourceMappingURL=base.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base.js","sourceRoot":"","sources":["../../src/services/base.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,38 @@
1
+ import { BaseService } from './base.js';
2
+ export interface ChatMessage {
3
+ role: 'user' | 'assistant' | 'system';
4
+ content: string;
5
+ }
6
+ export interface ChatCompletionOptions {
7
+ model: string;
8
+ messages: ChatMessage[];
9
+ stream?: boolean;
10
+ temperature?: number;
11
+ max_tokens?: number;
12
+ top_p?: number;
13
+ }
14
+ export interface ChatCompletionResult {
15
+ id: string;
16
+ object: string;
17
+ created: number;
18
+ model: string;
19
+ choices: Array<{
20
+ index: number;
21
+ message: ChatMessage;
22
+ finish_reason: string;
23
+ }>;
24
+ usage: {
25
+ prompt_tokens: number;
26
+ completion_tokens: number;
27
+ total_tokens: number;
28
+ };
29
+ }
30
+ export declare class ChatService extends BaseService {
31
+ complete(options: ChatCompletionOptions): Promise<ChatCompletionResult>;
32
+ stream(options: Omit<ChatCompletionOptions, 'stream'>): AsyncGenerator<string>;
33
+ models(): Promise<Array<{
34
+ id: string;
35
+ name: string;
36
+ }>>;
37
+ }
38
+ //# sourceMappingURL=chat.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chat.d.ts","sourceRoot":"","sources":["../../src/services/chat.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAExC,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,QAAQ,CAAC;IACtC,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,qBAAqB;IACpC,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,WAAW,EAAE,CAAC;IACxB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,oBAAoB;IACnC,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,KAAK,CAAC;QACb,KAAK,EAAE,MAAM,CAAC;QACd,OAAO,EAAE,WAAW,CAAC;QACrB,aAAa,EAAE,MAAM,CAAC;KACvB,CAAC,CAAC;IACH,KAAK,EAAE;QACL,aAAa,EAAE,MAAM,CAAC;QACtB,iBAAiB,EAAE,MAAM,CAAC;QAC1B,YAAY,EAAE,MAAM,CAAC;KACtB,CAAC;CACH;AAED,qBAAa,WAAY,SAAQ,WAAW;IACpC,QAAQ,CAAC,OAAO,EAAE,qBAAqB,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAMtE,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,qBAAqB,EAAE,QAAQ,CAAC,GAAG,cAAc,CAAC,MAAM,CAAC;IAyC/E,MAAM,IAAI,OAAO,CAAC,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAI7D"}
@@ -0,0 +1,53 @@
1
+ import { BaseService } from './base.js';
2
+ export class ChatService extends BaseService {
3
+ async complete(options) {
4
+ return this.request('POST', '/v1/chat/completions', {
5
+ body: { ...options, stream: false },
6
+ });
7
+ }
8
+ async *stream(options) {
9
+ const resp = await this.requestRaw('POST', '/v1/chat/completions', {
10
+ body: { ...options, stream: true },
11
+ });
12
+ const reader = resp.body?.getReader();
13
+ if (!reader)
14
+ return;
15
+ const decoder = new TextDecoder();
16
+ let buffer = '';
17
+ try {
18
+ while (true) {
19
+ const { done, value } = await reader.read();
20
+ if (done)
21
+ break;
22
+ buffer += decoder.decode(value, { stream: true });
23
+ const lines = buffer.split('\n');
24
+ buffer = lines.pop() ?? '';
25
+ for (const line of lines) {
26
+ const trimmed = line.trim();
27
+ if (!trimmed || !trimmed.startsWith('data: '))
28
+ continue;
29
+ const payload = trimmed.slice(6);
30
+ if (payload === '[DONE]')
31
+ return;
32
+ try {
33
+ const parsed = JSON.parse(payload);
34
+ const content = parsed.choices?.[0]?.delta?.content;
35
+ if (content)
36
+ yield content;
37
+ }
38
+ catch {
39
+ // skip malformed chunks
40
+ }
41
+ }
42
+ }
43
+ }
44
+ finally {
45
+ reader.releaseLock();
46
+ }
47
+ }
48
+ async models() {
49
+ const resp = await this.request('GET', '/v1/models');
50
+ return resp.data;
51
+ }
52
+ }
53
+ //# sourceMappingURL=chat.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chat.js","sourceRoot":"","sources":["../../src/services/chat.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAiCxC,MAAM,OAAO,WAAY,SAAQ,WAAW;IAC1C,KAAK,CAAC,QAAQ,CAAC,OAA8B;QAC3C,OAAO,IAAI,CAAC,OAAO,CAAuB,MAAM,EAAE,sBAAsB,EAAE;YACxE,IAAI,EAAE,EAAE,GAAG,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE;SACpC,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,CAAC,MAAM,CAAC,OAA8C;QAC1D,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,sBAAsB,EAAE;YACjE,IAAI,EAAE,EAAE,GAAG,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE;SACnC,CAAC,CAAC;QAEH,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,CAAC;QACtC,IAAI,CAAC,MAAM;YAAE,OAAO;QAEpB,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAC;QAClC,IAAI,MAAM,GAAG,EAAE,CAAC;QAEhB,IAAI,CAAC;YACH,OAAO,IAAI,EAAE,CAAC;gBACZ,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;gBAC5C,IAAI,IAAI;oBAAE,MAAM;gBAEhB,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;gBAClD,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBACjC,MAAM,GAAG,KAAK,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC;gBAE3B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;oBACzB,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;oBAC5B,IAAI,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC;wBAAE,SAAS;oBACxD,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;oBACjC,IAAI,OAAO,KAAK,QAAQ;wBAAE,OAAO;oBACjC,IAAI,CAAC;wBACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAEhC,CAAC;wBACF,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC;wBACpD,IAAI,OAAO;4BAAE,MAAM,OAAO,CAAC;oBAC7B,CAAC;oBAAC,MAAM,CAAC;wBACP,wBAAwB;oBAC1B,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;gBAAS,CAAC;YACT,MAAM,CAAC,WAAW,EAAE,CAAC;QACvB,CAAC;IACH,CAAC;IAED,KAAK,CAAC,MAAM;QACV,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAAgD,KAAK,EAAE,YAAY,CAAC,CAAC;QACpG,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;CACF"}
@@ -0,0 +1,245 @@
1
+ import { BaseService } from './base.js';
2
+ export interface Database {
3
+ id: string;
4
+ name: string;
5
+ type: string;
6
+ status: string;
7
+ region?: string;
8
+ plan?: string;
9
+ storageSize?: number;
10
+ createdAt?: string;
11
+ }
12
+ export interface CreateDatabaseOptions {
13
+ name: string;
14
+ plan?: string;
15
+ region?: string;
16
+ }
17
+ export interface Branch {
18
+ id: string;
19
+ name: string;
20
+ parentId?: string;
21
+ createdAt?: string;
22
+ }
23
+ export interface Backup {
24
+ id: string;
25
+ databaseId: string;
26
+ type: string;
27
+ status: string;
28
+ size: number;
29
+ createdAt: string;
30
+ }
31
+ export interface DatabaseMetrics {
32
+ connections: number;
33
+ queryRate: number;
34
+ errorRate: number;
35
+ storageUsed: number;
36
+ storageTotal: number;
37
+ cpuUsage?: number;
38
+ memoryUsage?: number;
39
+ responseTime?: number;
40
+ timestamp: string;
41
+ }
42
+ export interface PoolingStatus {
43
+ enabled: boolean;
44
+ managed: boolean;
45
+ provider: string;
46
+ mode: string;
47
+ totalConnections?: number;
48
+ activeConnections?: number;
49
+ idleConnections?: number;
50
+ }
51
+ export interface EncryptionStatus {
52
+ encryptionAtRest: boolean;
53
+ encryptionInTransit: boolean;
54
+ tlsVersion: string;
55
+ compliant: boolean;
56
+ managed: boolean;
57
+ provider: string;
58
+ }
59
+ export interface HAStatus {
60
+ enabled: boolean;
61
+ availabilityZones: string[];
62
+ readReplicas: number;
63
+ failoverEnabled: boolean;
64
+ managed: boolean;
65
+ }
66
+ export interface QueryResult {
67
+ rows: Record<string, unknown>[];
68
+ rowCount: number;
69
+ fields?: Array<{
70
+ name: string;
71
+ dataType: string;
72
+ }>;
73
+ }
74
+ export interface TableInfo {
75
+ name: string;
76
+ schema: string;
77
+ rowCount?: number;
78
+ }
79
+ export interface ColumnInfo {
80
+ name: string;
81
+ dataType: string;
82
+ nullable: boolean;
83
+ defaultValue?: string;
84
+ }
85
+ export declare class DatabaseService extends BaseService {
86
+ list(): Promise<{
87
+ databases: Database[];
88
+ }>;
89
+ create(options: CreateDatabaseOptions): Promise<{
90
+ database: Database;
91
+ }>;
92
+ get(databaseId: string): Promise<{
93
+ database: Database;
94
+ }>;
95
+ update(databaseId: string, updates: Partial<Database>): Promise<{
96
+ database: Database;
97
+ }>;
98
+ delete(databaseId: string): Promise<{
99
+ success: boolean;
100
+ }>;
101
+ listBranches(databaseId: string): Promise<{
102
+ branches: Branch[];
103
+ }>;
104
+ createBranch(databaseId: string, options: {
105
+ name: string;
106
+ parentId?: string;
107
+ }): Promise<{
108
+ branch: Branch;
109
+ }>;
110
+ deleteBranch(databaseId: string, branchId: string): Promise<{
111
+ success: boolean;
112
+ }>;
113
+ maskBranch(databaseId: string, branchId: string): Promise<{
114
+ success: boolean;
115
+ }>;
116
+ listBackups(databaseId: string): Promise<{
117
+ backups: Backup[];
118
+ }>;
119
+ createBackup(databaseId: string, name?: string): Promise<{
120
+ backup: Backup;
121
+ }>;
122
+ restoreBackup(databaseId: string, backupId: string): Promise<{
123
+ success: boolean;
124
+ }>;
125
+ deleteBackup(databaseId: string, backupId: string): Promise<{
126
+ success: boolean;
127
+ }>;
128
+ setBackupSchedule(databaseId: string, schedule: Record<string, unknown>): Promise<{
129
+ success: boolean;
130
+ }>;
131
+ enablePitr(databaseId: string): Promise<{
132
+ success: boolean;
133
+ message: string;
134
+ }>;
135
+ getRestorePoints(databaseId: string): Promise<{
136
+ restorePoints: Array<{
137
+ timestamp: string;
138
+ description: string;
139
+ }>;
140
+ }>;
141
+ restorePitr(databaseId: string, targetTime: string): Promise<{
142
+ success: boolean;
143
+ }>;
144
+ getEncryption(databaseId: string): Promise<{
145
+ encryption: EncryptionStatus;
146
+ }>;
147
+ updateEncryption(databaseId: string, settings: Record<string, unknown>): Promise<{
148
+ encryption: EncryptionStatus;
149
+ }>;
150
+ rotateEncryptionKeys(databaseId: string): Promise<{
151
+ success: boolean;
152
+ }>;
153
+ getHAStatus(databaseId: string): Promise<{
154
+ status: HAStatus;
155
+ }>;
156
+ enableHA(databaseId: string): Promise<{
157
+ status: HAStatus;
158
+ }>;
159
+ disableHA(databaseId: string): Promise<{
160
+ status: HAStatus;
161
+ }>;
162
+ getPoolingStatus(databaseId: string): Promise<{
163
+ pooling: PoolingStatus;
164
+ }>;
165
+ enablePooling(databaseId: string): Promise<{
166
+ pooling: PoolingStatus;
167
+ }>;
168
+ disablePooling(databaseId: string): Promise<{
169
+ success: boolean;
170
+ }>;
171
+ getPoolingStats(databaseId: string): Promise<{
172
+ stats: Record<string, number>;
173
+ }>;
174
+ updatePoolingConfig(databaseId: string, config: Record<string, unknown>): Promise<{
175
+ success: boolean;
176
+ }>;
177
+ query(databaseId: string, sql: string): Promise<QueryResult>;
178
+ explain(databaseId: string, sql: string): Promise<{
179
+ plan: string;
180
+ }>;
181
+ listTables(databaseId: string, schema?: string): Promise<{
182
+ tables: TableInfo[];
183
+ }>;
184
+ listColumns(databaseId: string, tableName: string, schema?: string): Promise<{
185
+ columns: ColumnInfo[];
186
+ }>;
187
+ listRows(databaseId: string, tableName: string, options?: {
188
+ schema?: string;
189
+ limit?: number;
190
+ offset?: number;
191
+ orderBy?: string;
192
+ orderDir?: 'asc' | 'desc';
193
+ }): Promise<{
194
+ rows: Record<string, unknown>[];
195
+ total: number;
196
+ }>;
197
+ insertRow(databaseId: string, tableName: string, data: Record<string, unknown>): Promise<{
198
+ success: boolean;
199
+ }>;
200
+ updateRow(databaseId: string, tableName: string, data: Record<string, unknown>): Promise<{
201
+ success: boolean;
202
+ }>;
203
+ deleteRow(databaseId: string, tableName: string, conditions: Record<string, unknown>): Promise<{
204
+ success: boolean;
205
+ }>;
206
+ listExtensions(databaseId: string): Promise<{
207
+ extensions: Array<{
208
+ name: string;
209
+ installed: boolean;
210
+ }>;
211
+ }>;
212
+ enableExtension(databaseId: string, name: string): Promise<{
213
+ success: boolean;
214
+ }>;
215
+ disableExtension(databaseId: string, name: string): Promise<{
216
+ success: boolean;
217
+ }>;
218
+ importSql(databaseId: string, sql: string): Promise<{
219
+ success: boolean;
220
+ }>;
221
+ importCsv(databaseId: string, data: {
222
+ tableName: string;
223
+ csv: string;
224
+ }): Promise<{
225
+ success: boolean;
226
+ }>;
227
+ rotateCredentials(databaseId: string): Promise<{
228
+ connection: Record<string, string>;
229
+ }>;
230
+ getMetrics(databaseId: string): Promise<{
231
+ metrics: DatabaseMetrics;
232
+ }>;
233
+ getLogs(databaseId: string, options?: {
234
+ limit?: number;
235
+ }): Promise<{
236
+ logs: Array<Record<string, unknown>>;
237
+ }>;
238
+ getConnection(databaseId: string): Promise<{
239
+ connectionString: string;
240
+ }>;
241
+ resetConnection(databaseId: string): Promise<{
242
+ success: boolean;
243
+ }>;
244
+ }
245
+ //# sourceMappingURL=database.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"database.d.ts","sourceRoot":"","sources":["../../src/services/database.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,195 @@
1
+ import { BaseService } from './base.js';
2
+ export class DatabaseService extends BaseService {
3
+ // ─── Core CRUD ─────────────────────
4
+ async list() {
5
+ return this.request('GET', '/api/scalixdb/databases');
6
+ }
7
+ async create(options) {
8
+ return this.request('POST', '/api/scalixdb/databases', {
9
+ body: options,
10
+ });
11
+ }
12
+ async get(databaseId) {
13
+ return this.request('GET', `/api/scalixdb/databases/${databaseId}`);
14
+ }
15
+ async update(databaseId, updates) {
16
+ return this.request('PATCH', `/api/scalixdb/databases/${databaseId}`, {
17
+ body: updates,
18
+ });
19
+ }
20
+ async delete(databaseId) {
21
+ return this.request('DELETE', `/api/scalixdb/databases/${databaseId}`);
22
+ }
23
+ // ─── Branches ─────────────────────
24
+ async listBranches(databaseId) {
25
+ return this.request('GET', `/api/scalixdb/databases/${databaseId}/branches`);
26
+ }
27
+ async createBranch(databaseId, options) {
28
+ return this.request('POST', `/api/scalixdb/databases/${databaseId}/branches`, {
29
+ body: options,
30
+ });
31
+ }
32
+ async deleteBranch(databaseId, branchId) {
33
+ return this.request('DELETE', `/api/scalixdb/databases/${databaseId}/branches/${branchId}`);
34
+ }
35
+ async maskBranch(databaseId, branchId) {
36
+ return this.request('POST', `/api/scalixdb/databases/${databaseId}/branches/${branchId}/mask`);
37
+ }
38
+ // ─── Backups ─────────────────────
39
+ async listBackups(databaseId) {
40
+ return this.request('GET', `/api/scalixdb/databases/${databaseId}/backups`);
41
+ }
42
+ async createBackup(databaseId, name) {
43
+ return this.request('POST', `/api/scalixdb/databases/${databaseId}/backups`, {
44
+ body: { name },
45
+ });
46
+ }
47
+ async restoreBackup(databaseId, backupId) {
48
+ return this.request('POST', `/api/scalixdb/databases/${databaseId}/backups/${backupId}/restore`);
49
+ }
50
+ async deleteBackup(databaseId, backupId) {
51
+ return this.request('DELETE', `/api/scalixdb/databases/${databaseId}/backups/${backupId}`);
52
+ }
53
+ async setBackupSchedule(databaseId, schedule) {
54
+ return this.request('PUT', `/api/scalixdb/databases/${databaseId}/backups/schedule`, {
55
+ body: schedule,
56
+ });
57
+ }
58
+ // ─── PITR (Point-in-Time Recovery) ─────────────────────
59
+ async enablePitr(databaseId) {
60
+ return this.request('POST', `/api/scalixdb/databases/${databaseId}/pitr/enable`);
61
+ }
62
+ async getRestorePoints(databaseId) {
63
+ return this.request('GET', `/api/scalixdb/databases/${databaseId}/pitr/restore-points`);
64
+ }
65
+ async restorePitr(databaseId, targetTime) {
66
+ return this.request('POST', `/api/scalixdb/databases/${databaseId}/pitr/restore`, {
67
+ body: { targetTime },
68
+ });
69
+ }
70
+ // ─── Encryption ─────────────────────
71
+ async getEncryption(databaseId) {
72
+ return this.request('GET', `/api/scalixdb/databases/${databaseId}/encryption/verify`);
73
+ }
74
+ async updateEncryption(databaseId, settings) {
75
+ return this.request('PUT', `/api/scalixdb/databases/${databaseId}/encryption`, {
76
+ body: settings,
77
+ });
78
+ }
79
+ async rotateEncryptionKeys(databaseId) {
80
+ return this.request('POST', `/api/scalixdb/databases/${databaseId}/encryption/rotate`);
81
+ }
82
+ // ─── High Availability ─────────────────────
83
+ async getHAStatus(databaseId) {
84
+ return this.request('GET', `/api/scalixdb/databases/${databaseId}/ha/status`);
85
+ }
86
+ async enableHA(databaseId) {
87
+ return this.request('POST', `/api/scalixdb/databases/${databaseId}/ha/enable`);
88
+ }
89
+ async disableHA(databaseId) {
90
+ return this.request('POST', `/api/scalixdb/databases/${databaseId}/ha/disable`);
91
+ }
92
+ // ─── Connection Pooling ─────────────────────
93
+ async getPoolingStatus(databaseId) {
94
+ return this.request('GET', `/api/scalixdb/databases/${databaseId}/pooling/status`);
95
+ }
96
+ async enablePooling(databaseId) {
97
+ return this.request('POST', `/api/scalixdb/databases/${databaseId}/pooling/enable`);
98
+ }
99
+ async disablePooling(databaseId) {
100
+ return this.request('POST', `/api/scalixdb/databases/${databaseId}/pooling/disable`);
101
+ }
102
+ async getPoolingStats(databaseId) {
103
+ return this.request('GET', `/api/scalixdb/databases/${databaseId}/pooling/stats`);
104
+ }
105
+ async updatePoolingConfig(databaseId, config) {
106
+ return this.request('PUT', `/api/scalixdb/databases/${databaseId}/pooling/config`, {
107
+ body: config,
108
+ });
109
+ }
110
+ // ─── Query Execution ─────────────────────
111
+ async query(databaseId, sql) {
112
+ return this.request('POST', `/api/scalixdb/databases/${databaseId}/query`, {
113
+ body: { sql },
114
+ });
115
+ }
116
+ async explain(databaseId, sql) {
117
+ return this.request('POST', `/api/scalixdb/databases/${databaseId}/explain`, {
118
+ body: { sql },
119
+ });
120
+ }
121
+ // ─── Table Browsing ─────────────────────
122
+ async listTables(databaseId, schema) {
123
+ const qs = schema ? `?schema=${encodeURIComponent(schema)}` : '';
124
+ return this.request('GET', `/api/scalixdb/databases/${databaseId}/tables${qs}`);
125
+ }
126
+ async listColumns(databaseId, tableName, schema) {
127
+ const qs = schema ? `?schema=${encodeURIComponent(schema)}` : '';
128
+ return this.request('GET', `/api/scalixdb/databases/${databaseId}/tables/${tableName}/columns${qs}`);
129
+ }
130
+ async listRows(databaseId, tableName, options) {
131
+ const params = new URLSearchParams();
132
+ if (options?.schema)
133
+ params.set('schema', options.schema);
134
+ if (options?.limit !== undefined)
135
+ params.set('limit', String(options.limit));
136
+ if (options?.offset !== undefined)
137
+ params.set('offset', String(options.offset));
138
+ if (options?.orderBy)
139
+ params.set('orderBy', options.orderBy);
140
+ if (options?.orderDir)
141
+ params.set('orderDir', options.orderDir);
142
+ const qs = params.toString() ? `?${params.toString()}` : '';
143
+ return this.request('GET', `/api/scalixdb/databases/${databaseId}/tables/${tableName}/rows${qs}`);
144
+ }
145
+ async insertRow(databaseId, tableName, data) {
146
+ return this.request('POST', `/api/scalixdb/databases/${databaseId}/tables/${tableName}/rows`, { body: data });
147
+ }
148
+ async updateRow(databaseId, tableName, data) {
149
+ return this.request('PUT', `/api/scalixdb/databases/${databaseId}/tables/${tableName}/rows`, { body: data });
150
+ }
151
+ async deleteRow(databaseId, tableName, conditions) {
152
+ return this.request('DELETE', `/api/scalixdb/databases/${databaseId}/tables/${tableName}/rows`, { body: conditions });
153
+ }
154
+ // ─── Extensions ─────────────────────
155
+ async listExtensions(databaseId) {
156
+ return this.request('GET', `/api/scalixdb/databases/${databaseId}/extensions`);
157
+ }
158
+ async enableExtension(databaseId, name) {
159
+ return this.request('POST', `/api/scalixdb/databases/${databaseId}/extensions/${name}/enable`);
160
+ }
161
+ async disableExtension(databaseId, name) {
162
+ return this.request('POST', `/api/scalixdb/databases/${databaseId}/extensions/${name}/disable`);
163
+ }
164
+ // ─── Import ─────────────────────
165
+ async importSql(databaseId, sql) {
166
+ return this.request('POST', `/api/scalixdb/databases/${databaseId}/import/sql`, {
167
+ body: { sql },
168
+ });
169
+ }
170
+ async importCsv(databaseId, data) {
171
+ return this.request('POST', `/api/scalixdb/databases/${databaseId}/import/csv`, {
172
+ body: data,
173
+ });
174
+ }
175
+ // ─── Credentials ─────────────────────
176
+ async rotateCredentials(databaseId) {
177
+ return this.request('POST', `/api/scalixdb/databases/${databaseId}/credentials/rotate`);
178
+ }
179
+ // ─── Monitoring ─────────────────────
180
+ async getMetrics(databaseId) {
181
+ return this.request('GET', `/api/scalixdb/databases/${databaseId}/metrics`);
182
+ }
183
+ async getLogs(databaseId, options) {
184
+ const qs = options?.limit ? `?limit=${options.limit}` : '';
185
+ return this.request('GET', `/api/scalixdb/databases/${databaseId}/logs${qs}`);
186
+ }
187
+ // ─── Connection ─────────────────────
188
+ async getConnection(databaseId) {
189
+ return this.request('GET', `/api/scalixdb/databases/${databaseId}/connection`);
190
+ }
191
+ async resetConnection(databaseId) {
192
+ return this.request('POST', `/api/scalixdb/databases/${databaseId}/connection/reset`);
193
+ }
194
+ }
195
+ //# sourceMappingURL=database.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"database.js","sourceRoot":"","sources":["../../src/services/database.ts"],"names":[],"mappings":"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"}