lamix 4.2.13 → 4.2.14

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
@@ -288,21 +288,9 @@ class User extends BaseModel {
288
288
  return this.hasMany(Post', 'user_id', 'id').onDelete('cascade');
289
289
  }
290
290
 
291
- # Create sessions Table MySQL/Postgres sql
292
- CREATE TABLE sessions (
293
- sid VARCHAR(255) PRIMARY KEY,
294
- data TEXT NOT NULL,
295
- expires BIGINT NOT NULL
296
- );
297
- CREATE INDEX idx_sessions_expires ON sessions (expires);
298
-
299
- # Create sessions Table sqlite sql
300
- CREATE TABLE sessions (
301
- sid TEXT PRIMARY KEY,
302
- data TEXT NOT NULL,
303
- expires INTEGER NOT NULL
304
- );
305
- CREATE INDEX idx_sessions_expires ON sessions (expires);
291
+ # migrate sessions Table(whenever migration is run session is auto generated if missing)
292
+ npx lamix migrate
293
+ ➡️ sessions table + index are guaranteed to exist.
306
294
 
307
295
  # Session setup
308
296
  const express = require('express');
@@ -340,4 +328,4 @@ class User extends BaseModel {
340
328
  });
341
329
 
342
330
  app.listen(3000);
343
- }
331
+ }
package/bin/cli.js CHANGED
@@ -1,4 +1,4 @@
1
- #!/usr/bin/env node
1
+ #!/usr/bin/env node
2
2
 
3
3
  const fs = require('fs');
4
4
  const path = require('path');
@@ -274,6 +274,8 @@ async function runMigrations() {
274
274
  DB.initFromEnv();
275
275
  await DB.connect();
276
276
 
277
+ await ensureSessionsTable();
278
+
277
279
  const applied = await getAppliedMigrations();
278
280
  const files = fs.readdirSync(MIGRATIONS_DIR)
279
281
  .filter(f => f.endsWith('.js'))
@@ -348,6 +350,63 @@ async function tableExists(tableName) {
348
350
  return false;
349
351
  }
350
352
 
353
+ // ------------------ SESSION hELPER ------------------
354
+
355
+ async function ensureSessionsTable() {
356
+ const exists = await tableExists('sessions');
357
+ if (exists) {
358
+ log.info('ℹ️ sessions table already exists. Skipping.');
359
+ return;
360
+ }
361
+
362
+ log.info('⚙️ Creating sessions table...');
363
+
364
+ if (DB.driver === 'mysql') {
365
+ await DB.raw(`
366
+ CREATE TABLE sessions (
367
+ sid VARCHAR(255) PRIMARY KEY,
368
+ data TEXT NOT NULL,
369
+ expires BIGINT NOT NULL
370
+ )
371
+ `);
372
+
373
+ await DB.raw(`
374
+ CREATE INDEX idx_sessions_expires ON sessions (expires)
375
+ `);
376
+ }
377
+
378
+ if (DB.driver === 'sqlite') {
379
+ await DB.raw(`
380
+ CREATE TABLE sessions (
381
+ sid TEXT PRIMARY KEY,
382
+ data TEXT NOT NULL,
383
+ expires INTEGER NOT NULL
384
+ )
385
+ `);
386
+
387
+ await DB.raw(`
388
+ CREATE INDEX idx_sessions_expires ON sessions (expires)
389
+ `);
390
+ }
391
+
392
+ if (DB.driver === 'pg') {
393
+ await DB.raw(`
394
+ CREATE TABLE sessions (
395
+ sid VARCHAR(255) PRIMARY KEY,
396
+ data TEXT NOT NULL,
397
+ expires BIGINT NOT NULL
398
+ )
399
+ `);
400
+
401
+ await DB.raw(`
402
+ CREATE INDEX idx_sessions_expires ON sessions (expires)
403
+ `);
404
+ }
405
+
406
+ log.success('✅ sessions table created successfully.');
407
+ }
408
+
409
+
351
410
 
352
411
  async function rollbackLastMigration() {
353
412
  DB.initFromEnv();
package/lib/index.d.ts CHANGED
@@ -488,6 +488,17 @@ export class DBError extends Error {
488
488
  constructor(message: any, meta?: {});
489
489
  meta: {};
490
490
  }
491
+ export class LamixSessionStore {
492
+ constructor(options?: {});
493
+ ttl: any;
494
+ cleanupInterval: any;
495
+ get(sid: any, cb: any): Promise<any>;
496
+ set(sid: any, sessionData: any, cb: any): Promise<void>;
497
+ destroy(sid: any, cb: any): Promise<void>;
498
+ touch(sid: any, sessionData: any, cb: any): Promise<any>;
499
+ _startCleanup(): void;
500
+ _cleanupTimer: NodeJS.Timeout;
501
+ }
491
502
  export class BaseModel extends Model {
492
503
  static passwordField: string;
493
504
  static hashRounds: number;
package/lib/index.js CHANGED
@@ -135,31 +135,6 @@ class DB {
135
135
  }
136
136
 
137
137
  /* ---------- Driver ---------- */
138
-
139
- // static _ensureModule() {
140
- // if (!this.driver) this.initFromEnv();
141
-
142
- // if (this.driver === 'mysql') {
143
- // const m = tryRequire('mysql2/promise');
144
- // if (!m) throw new DBError('Missing mysql2');
145
- // return m;
146
- // }
147
-
148
- // if (this.driver === 'pg') {
149
- // const m = tryRequire('pg');
150
- // if (!m) throw new DBError('Missing pg');
151
- // return m;
152
- // }
153
-
154
- // if (this.driver === 'sqlite') {
155
- // const m = tryRequire('sqlite3');
156
- // if (!m) throw new DBError('Missing sqlite3');
157
- // return m;
158
- // }
159
-
160
- // throw new DBError(`Unsupported driver: ${this.driver}`);
161
- // }
162
-
163
138
  static _ensureModule() {
164
139
  if (!this.driver) this.initFromEnv();
165
140
 
package/package.json CHANGED
@@ -1,8 +1,9 @@
1
1
  {
2
2
  "name": "lamix",
3
- "version": "4.2.13",
3
+ "version": "4.2.14",
4
4
  "description": "lamix - ORM for Node-express js",
5
5
  "main": "./lib",
6
+ "type": "commonjs",
6
7
  "exports": {
7
8
  ".": {
8
9
  "require": "./lib/index.js",
@@ -39,6 +40,7 @@
39
40
  "orm",
40
41
  "nodejs",
41
42
  "database",
43
+ "express",
42
44
  "sql"
43
45
  ],
44
46
  "author": {