@hawiah/postgres 0.1.1 → 0.2.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.
@@ -4,52 +4,55 @@ import { IDriver, Query, Data } from '../interfaces/IDriver';
4
4
  * PostgreSQL driver configuration options
5
5
  */
6
6
  export interface PostgreSQLDriverOptions {
7
- /**
8
- * PostgreSQL connection string (recommended)
9
- * Example: 'postgresql://user:password@host:port/database'
10
- */
7
+ /** PostgreSQL connection string (e.g. 'postgres://user:pass@host:port/db') */
11
8
  connectionString?: string;
12
- /**
13
- * Or individual connection parameters
14
- */
9
+ /** Database host */
15
10
  host?: string;
11
+ /** Database port (default: 5432) */
16
12
  port?: number;
13
+ /** Database user */
17
14
  user?: string;
15
+ /** Database password */
18
16
  password?: string;
17
+ /** Database name */
19
18
  database?: string;
20
- /**
21
- * Table name to use
22
- */
19
+ /** Table name to use for storing data */
23
20
  tableName: string;
24
- /**
25
- * SSL configuration (required for cloud providers like Neon, Supabase)
26
- */
21
+ /** SSL configuration (required for some cloud providers) */
27
22
  ssl?: boolean | object;
28
- /**
29
- * Connection pool size (default: 10)
30
- */
23
+ /** Connection pool size (default: 10) */
31
24
  max?: number;
32
- /**
33
- * Additional PostgreSQL pool options
34
- */
25
+ /** Additional pool configuration */
35
26
  poolOptions?: PoolConfig;
36
27
  }
37
28
  /**
38
29
  * Driver implementation for PostgreSQL using node-postgres.
39
- * Provides a schema-less interface to PostgreSQL tables with JSONB storage.
30
+ * Supports Hybrid Schema (Real Columns + JSONB) for optimized storage and querying.
40
31
  */
41
32
  export declare class PostgreSQLDriver implements IDriver {
42
33
  private pool;
43
34
  private tableName;
44
35
  private config;
36
+ private schema;
37
+ /**
38
+ * Database type (sql or nosql).
39
+ * Defaults to 'nosql' until a schema is set via setSchema().
40
+ */
41
+ dbType: 'sql' | 'nosql';
45
42
  /**
46
43
  * Creates a new instance of PostgreSQLDriver
47
44
  * @param options - PostgreSQL driver configuration options
48
45
  */
49
46
  constructor(options: PostgreSQLDriverOptions);
47
+ /**
48
+ * Sets the schema for the driver.
49
+ * Switches the driver to SQL mode to use real columns.
50
+ * @param schema - The schema instance
51
+ */
52
+ setSchema(schema: any): void;
50
53
  /**
51
54
  * Connects to the PostgreSQL database.
52
- * Creates the table if it doesn't exist.
55
+ * Creates the table (Hybrid or JSONB only) if it doesn't exist.
53
56
  */
54
57
  connect(): Promise<void>;
55
58
  /**
@@ -58,12 +61,14 @@ export declare class PostgreSQLDriver implements IDriver {
58
61
  disconnect(): Promise<void>;
59
62
  /**
60
63
  * Inserts a new record into the database.
64
+ * Uses real columns if schema is present, otherwise stores as JSONB.
61
65
  * @param data - The data to insert
62
66
  * @returns The inserted record with ID
63
67
  */
64
68
  set(data: Data): Promise<Data>;
65
69
  /**
66
70
  * Retrieves records matching the query.
71
+ * Merges JSONB data with columns if in Hybrid mode.
67
72
  * @param query - The query criteria
68
73
  * @returns Array of matching records
69
74
  */
@@ -76,6 +81,7 @@ export declare class PostgreSQLDriver implements IDriver {
76
81
  getOne(query: Query): Promise<Data | null>;
77
82
  /**
78
83
  * Updates records matching the query.
84
+ * Updates both columns and extra JSONB data accordingly.
79
85
  * @param query - The query criteria
80
86
  * @param data - The data to update
81
87
  * @returns The number of updated records
@@ -119,6 +125,27 @@ export declare class PostgreSQLDriver implements IDriver {
119
125
  * @private
120
126
  */
121
127
  private matchesQuery;
128
+ /**
129
+ * Maps Hawiah types to Postgres types.
130
+ * @param type - The Hawiah schema type
131
+ * @returns The corresponding PostgreSQL type string
132
+ * @private
133
+ */
134
+ private mapHawiahTypeToSQL;
135
+ /**
136
+ * Splits data into schema columns and extra data.
137
+ * @param data - The full data object
138
+ * @returns Object containing separate schemaData and extraData
139
+ * @private
140
+ */
141
+ private splitData;
142
+ /**
143
+ * Merges schema columns and extra data back into a single object.
144
+ * @param row - The raw database row
145
+ * @returns The fully merged data object
146
+ * @private
147
+ */
148
+ private mergeData;
122
149
  /**
123
150
  * Gets the PostgreSQL connection pool.
124
151
  * @returns The PostgreSQL connection pool
@@ -129,7 +156,7 @@ export declare class PostgreSQLDriver implements IDriver {
129
156
  * WARNING: Use with caution. This bypasses the abstraction layer.
130
157
  * @param sql - The SQL query to execute
131
158
  * @param params - Optional parameters for the query
132
- * @returns Query results
159
+ * @returns Query results (rows)
133
160
  */
134
161
  executeRaw(sql: string, params?: any[]): Promise<any>;
135
162
  /**
@@ -4,12 +4,18 @@ exports.PostgreSQLDriver = void 0;
4
4
  const pg_1 = require("pg");
5
5
  /**
6
6
  * Driver implementation for PostgreSQL using node-postgres.
7
- * Provides a schema-less interface to PostgreSQL tables with JSONB storage.
7
+ * Supports Hybrid Schema (Real Columns + JSONB) for optimized storage and querying.
8
8
  */
9
9
  class PostgreSQLDriver {
10
10
  pool = null;
11
11
  tableName;
12
12
  config;
13
+ schema = null;
14
+ /**
15
+ * Database type (sql or nosql).
16
+ * Defaults to 'nosql' until a schema is set via setSchema().
17
+ */
18
+ dbType = 'nosql';
13
19
  /**
14
20
  * Creates a new instance of PostgreSQLDriver
15
21
  * @param options - PostgreSQL driver configuration options
@@ -28,21 +34,55 @@ class PostgreSQLDriver {
28
34
  ...options.poolOptions,
29
35
  };
30
36
  }
37
+ /**
38
+ * Sets the schema for the driver.
39
+ * Switches the driver to SQL mode to use real columns.
40
+ * @param schema - The schema instance
41
+ */
42
+ setSchema(schema) {
43
+ this.schema = schema;
44
+ this.dbType = 'sql';
45
+ }
31
46
  /**
32
47
  * Connects to the PostgreSQL database.
33
- * Creates the table if it doesn't exist.
48
+ * Creates the table (Hybrid or JSONB only) if it doesn't exist.
34
49
  */
35
50
  async connect() {
36
51
  this.pool = new pg_1.Pool(this.config);
37
- const createTableSQL = `
38
- CREATE TABLE IF NOT EXISTS ${this.tableName} (
39
- _id VARCHAR(100) PRIMARY KEY,
40
- _data JSONB NOT NULL,
41
- _createdAt TIMESTAMP NOT NULL,
42
- _updatedAt TIMESTAMP NOT NULL
43
- )
44
- `;
52
+ let createTableSQL = '';
53
+ if (this.schema && this.dbType === 'sql') {
54
+ const definition = typeof this.schema.getDefinition === 'function'
55
+ ? this.schema.getDefinition()
56
+ : this.schema;
57
+ // Map schema fields to Postgres column definitions
58
+ const columns = Object.entries(definition).map(([key, type]) => {
59
+ const sqlType = this.mapHawiahTypeToSQL(type);
60
+ return `${key} ${sqlType}`; // e.g. "age INTEGER"
61
+ }).join(', \n');
62
+ // Hybrid Table: Real Columns + _extras JSONB
63
+ createTableSQL = `
64
+ CREATE TABLE IF NOT EXISTS ${this.tableName} (
65
+ _id VARCHAR(100) PRIMARY KEY,
66
+ ${columns},
67
+ _extras JSONB DEFAULT '{}',
68
+ _createdAt TIMESTAMP NOT NULL,
69
+ _updatedAt TIMESTAMP NOT NULL
70
+ )
71
+ `;
72
+ }
73
+ else {
74
+ // NoSQL Mode: Everything stored in _data JSONB
75
+ createTableSQL = `
76
+ CREATE TABLE IF NOT EXISTS ${this.tableName} (
77
+ _id VARCHAR(100) PRIMARY KEY,
78
+ _data JSONB NOT NULL,
79
+ _createdAt TIMESTAMP NOT NULL,
80
+ _updatedAt TIMESTAMP NOT NULL
81
+ )
82
+ `;
83
+ }
45
84
  await this.pool.query(createTableSQL);
85
+ // Ensure standard indexes exist
46
86
  await this.pool.query(`CREATE INDEX IF NOT EXISTS idx_${this.tableName}_createdAt ON ${this.tableName}(_createdAt)`);
47
87
  await this.pool.query(`CREATE INDEX IF NOT EXISTS idx_${this.tableName}_updatedAt ON ${this.tableName}(_updatedAt)`);
48
88
  }
@@ -57,6 +97,7 @@ class PostgreSQLDriver {
57
97
  }
58
98
  /**
59
99
  * Inserts a new record into the database.
100
+ * Uses real columns if schema is present, otherwise stores as JSONB.
60
101
  * @param data - The data to insert
61
102
  * @returns The inserted record with ID
62
103
  */
@@ -70,32 +111,53 @@ class PostgreSQLDriver {
70
111
  _createdAt: now.toISOString(),
71
112
  _updatedAt: now.toISOString(),
72
113
  };
73
- const sql = `
74
- INSERT INTO ${this.tableName} (_id, _data, _createdAt, _updatedAt)
75
- VALUES ($1, $2, $3, $4)
76
- `;
77
- await this.pool.query(sql, [
78
- id,
79
- JSON.stringify(record),
80
- now,
81
- now,
82
- ]);
114
+ if (this.schema && this.dbType === 'sql') {
115
+ const { schemaData, extraData } = this.splitData(record);
116
+ const schemaKeys = Object.keys(schemaData);
117
+ const schemaValues = Object.values(schemaData);
118
+ // Columns: ID + Schema Fields + Extras + Times
119
+ const cols = ['_id', ...schemaKeys, '_extras', '_createdAt', '_updatedAt'];
120
+ // Placeholders: $1, $2, ...
121
+ const valueParams = cols.map((_, i) => `$${i + 1}`).join(', ');
122
+ // Values mapped to placeholders
123
+ const values = [id, ...schemaValues, JSON.stringify(extraData), now, now];
124
+ const sql = `INSERT INTO ${this.tableName} (${cols.join(', ')}) VALUES (${valueParams})`;
125
+ await this.pool.query(sql, values);
126
+ }
127
+ else {
128
+ const sql = `
129
+ INSERT INTO ${this.tableName} (_id, _data, _createdAt, _updatedAt)
130
+ VALUES ($1, $2, $3, $4)
131
+ `;
132
+ await this.pool.query(sql, [id, JSON.stringify(record), now, now]);
133
+ }
83
134
  return record;
84
135
  }
85
136
  /**
86
137
  * Retrieves records matching the query.
138
+ * Merges JSONB data with columns if in Hybrid mode.
87
139
  * @param query - The query criteria
88
140
  * @returns Array of matching records
89
141
  */
90
142
  async get(query) {
91
143
  this.ensureConnected();
92
- const sql = `SELECT _data FROM ${this.tableName}`;
93
- const result = await this.pool.query(sql);
94
- const allRecords = result.rows.map((row) => row._data);
95
- if (Object.keys(query).length === 0) {
96
- return allRecords;
144
+ if (this.schema && this.dbType === 'sql') {
145
+ const sql = `SELECT * FROM ${this.tableName}`;
146
+ const result = await this.pool.query(sql);
147
+ // Merge Real Columns + Extras JSONB
148
+ const records = result.rows.map(row => this.mergeData(row));
149
+ if (Object.keys(query).length === 0)
150
+ return records;
151
+ return records.filter(record => this.matchesQuery(record, query));
152
+ }
153
+ else {
154
+ const sql = `SELECT _data FROM ${this.tableName}`;
155
+ const result = await this.pool.query(sql);
156
+ const allRecords = result.rows.map((row) => row._data);
157
+ if (Object.keys(query).length === 0)
158
+ return allRecords;
159
+ return allRecords.filter((record) => this.matchesQuery(record, query));
97
160
  }
98
- return allRecords.filter((record) => this.matchesQuery(record, query));
99
161
  }
100
162
  /**
101
163
  * Retrieves a single record matching the query.
@@ -105,18 +167,23 @@ class PostgreSQLDriver {
105
167
  async getOne(query) {
106
168
  this.ensureConnected();
107
169
  if (query._id) {
108
- const sql = `SELECT _data FROM ${this.tableName} WHERE _id = $1 LIMIT 1`;
109
- const result = await this.pool.query(sql, [query._id]);
110
- if (result.rows.length > 0) {
111
- return result.rows[0]._data;
170
+ if (this.schema && this.dbType === 'sql') {
171
+ const sql = `SELECT * FROM ${this.tableName} WHERE _id = $1 LIMIT 1`;
172
+ const result = await this.pool.query(sql, [query._id]);
173
+ return result.rows.length > 0 ? this.mergeData(result.rows[0]) : null;
174
+ }
175
+ else {
176
+ const sql = `SELECT _data FROM ${this.tableName} WHERE _id = $1 LIMIT 1`;
177
+ const result = await this.pool.query(sql, [query._id]);
178
+ return result.rows.length > 0 ? result.rows[0]._data : null;
112
179
  }
113
- return null;
114
180
  }
115
181
  const results = await this.get(query);
116
182
  return results.length > 0 ? results[0] : null;
117
183
  }
118
184
  /**
119
185
  * Updates records matching the query.
186
+ * Updates both columns and extra JSONB data accordingly.
120
187
  * @param query - The query criteria
121
188
  * @param data - The data to update
122
189
  * @returns The number of updated records
@@ -125,24 +192,37 @@ class PostgreSQLDriver {
125
192
  this.ensureConnected();
126
193
  const records = await this.get(query);
127
194
  let count = 0;
128
- const sql = `
129
- UPDATE ${this.tableName}
130
- SET _data = $1, _updatedAt = $2
131
- WHERE _id = $3
132
- `;
133
195
  for (const record of records) {
134
196
  const updatedRecord = {
135
197
  ...record,
136
198
  ...data,
137
199
  _updatedAt: new Date().toISOString(),
138
200
  };
139
- updatedRecord._id = record._id;
140
- updatedRecord._createdAt = record._createdAt;
141
- await this.pool.query(sql, [
142
- JSON.stringify(updatedRecord),
143
- new Date(),
144
- record._id,
145
- ]);
201
+ const now = new Date();
202
+ if (this.schema && this.dbType === 'sql') {
203
+ const { schemaData, extraData } = this.splitData(updatedRecord);
204
+ const schemaKeys = Object.keys(schemaData);
205
+ const schemaValues = Object.values(schemaData);
206
+ // Build dynamic SET clause: "col1 = $1, col2 = $2, ..."
207
+ let setParts = [];
208
+ let params = [];
209
+ let idx = 1;
210
+ for (let i = 0; i < schemaKeys.length; i++) {
211
+ setParts.push(`${schemaKeys[i]} = $${idx++}`);
212
+ params.push(schemaValues[i]);
213
+ }
214
+ setParts.push(`_extras = $${idx++}`);
215
+ params.push(JSON.stringify(extraData));
216
+ setParts.push(`_updatedAt = $${idx++}`);
217
+ params.push(now);
218
+ params.push(record._id); // Last param is ID
219
+ const sql = `UPDATE ${this.tableName} SET ${setParts.join(', ')} WHERE _id = $${idx}`;
220
+ await this.pool.query(sql, params);
221
+ }
222
+ else {
223
+ const sql = `UPDATE ${this.tableName} SET _data = $1, _updatedAt = $2 WHERE _id = $3`;
224
+ await this.pool.query(sql, [JSON.stringify(updatedRecord), now, record._id]);
225
+ }
146
226
  count++;
147
227
  }
148
228
  return count;
@@ -221,19 +301,88 @@ class PostgreSQLDriver {
221
301
  }
222
302
  return true;
223
303
  }
304
+ /**
305
+ * Maps Hawiah types to Postgres types.
306
+ * @param type - The Hawiah schema type
307
+ * @returns The corresponding PostgreSQL type string
308
+ * @private
309
+ */
310
+ mapHawiahTypeToSQL(type) {
311
+ let t = type;
312
+ if (typeof type === 'object' && type !== null && type.type) {
313
+ t = type.type;
314
+ }
315
+ t = String(t).toUpperCase();
316
+ if (t.includes('STRING') || t.includes('TEXT') || t.includes('EMAIL') || t.includes('URL') || t.includes('CHAR'))
317
+ return 'TEXT';
318
+ if (t.includes('UUID'))
319
+ return 'UUID'; // Native UUID support
320
+ if (t.includes('NUMBER')) {
321
+ if (t.includes('INT'))
322
+ return 'INTEGER';
323
+ if (t.includes('BIGINT'))
324
+ return 'BIGINT';
325
+ return 'REAL'; // Default float
326
+ }
327
+ if (t.includes('BOOLEAN'))
328
+ return 'BOOLEAN';
329
+ if (t.includes('DATE'))
330
+ return 'TIMESTAMP';
331
+ if (t.includes('JSON'))
332
+ return 'JSONB'; // Native JSON support
333
+ if (t.includes('BLOB'))
334
+ return 'BYTEA';
335
+ return 'TEXT';
336
+ }
337
+ /**
338
+ * Splits data into schema columns and extra data.
339
+ * @param data - The full data object
340
+ * @returns Object containing separate schemaData and extraData
341
+ * @private
342
+ */
343
+ splitData(data) {
344
+ if (!this.schema)
345
+ return { schemaData: {}, extraData: data };
346
+ const definition = typeof this.schema.getDefinition === 'function'
347
+ ? this.schema.getDefinition()
348
+ : this.schema;
349
+ const schemaData = {};
350
+ const extraData = {};
351
+ for (const [key, value] of Object.entries(data)) {
352
+ if (key in definition) {
353
+ schemaData[key] = value;
354
+ }
355
+ else if (!['_id', '_createdAt', '_updatedAt'].includes(key)) {
356
+ extraData[key] = value;
357
+ }
358
+ }
359
+ return { schemaData, extraData };
360
+ }
361
+ /**
362
+ * Merges schema columns and extra data back into a single object.
363
+ * @param row - The raw database row
364
+ * @returns The fully merged data object
365
+ * @private
366
+ */
367
+ mergeData(row) {
368
+ const { _extras, ...rest } = row;
369
+ // Postgres pg driver automatically parses JSONB columns into objects
370
+ const extras = (typeof _extras === 'object' && _extras !== null) ? _extras :
371
+ (typeof _extras === 'string' ? JSON.parse(_extras) : {});
372
+ return { ...rest, ...extras };
373
+ }
374
+ // --- Public Utility Methods ---
224
375
  /**
225
376
  * Gets the PostgreSQL connection pool.
226
377
  * @returns The PostgreSQL connection pool
227
378
  */
228
- getPool() {
229
- return this.pool;
230
- }
379
+ getPool() { return this.pool; }
231
380
  /**
232
381
  * Executes a raw SQL query.
233
382
  * WARNING: Use with caution. This bypasses the abstraction layer.
234
383
  * @param sql - The SQL query to execute
235
384
  * @param params - Optional parameters for the query
236
- * @returns Query results
385
+ * @returns Query results (rows)
237
386
  */
238
387
  async executeRaw(sql, params) {
239
388
  this.ensureConnected();
@@ -1 +1 @@
1
- {"version":3,"file":"PostgreSQLDriver.js","sourceRoot":"","sources":["../../src/drivers/PostgreSQLDriver.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"PostgreSQLDriver.js","sourceRoot":"","sources":["../../src/drivers/PostgreSQLDriver.ts"],"names":[],"mappings":"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"}
@@ -65,4 +65,13 @@ export interface IDriver {
65
65
  * @returns Number of matching records
66
66
  */
67
67
  count(query: Query): Promise<number>;
68
+ /**
69
+ * Database type (sql or nosql)
70
+ * Used to determine schema behavior
71
+ */
72
+ dbType?: 'sql' | 'nosql';
73
+ /**
74
+ * Optional: Set schema for the driver to use (e.g. for creating SQL tables)
75
+ */
76
+ setSchema?(schema: any): void;
68
77
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hawiah/postgres",
3
- "version": "0.1.1",
3
+ "version": "0.2.1",
4
4
  "description": "PostgreSQL driver with schema-less JSONB storage - lightweight and fast data persistence for Node.js",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",