lamix 4.2.11 → 4.2.13
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 +56 -3
- package/lib/index.js +584 -158
- package/package.json +4 -4
- package/examples/Alternative.md +0 -23
- package/examples/CRUD.md +0 -51
- package/examples/Post.md +0 -28
- package/examples/PostController.md +0 -93
- package/examples/Query Builder.md +0 -55
- package/examples/Relations.md +0 -16
- package/examples/Role.md +0 -26
- package/examples/RoleController.md +0 -65
- package/examples/Usages.md +0 -132
- package/examples/User.md +0 -42
- package/examples/UserController.md +0 -98
package/README.md
CHANGED
|
@@ -87,7 +87,7 @@ npm i lamix
|
|
|
87
87
|
2. Install dependencies (if any).
|
|
88
88
|
> This tool uses `mysql2`,`pg`,`sqlite3` driver, so make sure you install your prefered driver:
|
|
89
89
|
DATABASE CONNECTION IN `.env`FILE
|
|
90
|
-
Configure DB via environment variables: `'DB_CONNECTION=mysql',DB_HOST=your db hast`, `DB_USER=your db user`, `DB_PASS=your db password`, `DB_NAME=your db name`, `DB_PORT=your db port`, `DB_CONNECTION_LIMIT=
|
|
90
|
+
Configure DB via environment variables: `'DB_CONNECTION=mysql',DB_HOST=your db hast`, `DB_USER=your db user`, `DB_PASS=your db password`, `DB_NAME=your db name`, `DB_PORT=your db port`, `DB_CONNECTION_LIMIT=10`.
|
|
91
91
|
|
|
92
92
|
## Quick start
|
|
93
93
|
for database connection use any driver of your choice eg
|
|
@@ -271,7 +271,7 @@ class User extends BaseModel {
|
|
|
271
271
|
}
|
|
272
272
|
|
|
273
273
|
|
|
274
|
-
|
|
274
|
+
# Many-to-many: User ↔ Role via pivot user_roles (user_id, role_id)
|
|
275
275
|
roles() {
|
|
276
276
|
const Role = require('./Role');
|
|
277
277
|
return this.belongsToMany(
|
|
@@ -282,9 +282,62 @@ class User extends BaseModel {
|
|
|
282
282
|
).onDelete('detach');
|
|
283
283
|
}
|
|
284
284
|
|
|
285
|
-
|
|
285
|
+
# One-to-many: User -> Post
|
|
286
286
|
posts() {
|
|
287
287
|
const Post = require('./Post');
|
|
288
288
|
return this.hasMany(Post', 'user_id', 'id').onDelete('cascade');
|
|
289
289
|
}
|
|
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);
|
|
306
|
+
|
|
307
|
+
# Session setup
|
|
308
|
+
const express = require('express');
|
|
309
|
+
const session = require('express-session');
|
|
310
|
+
const { DB, LamixSessionStore } = require('lamix');
|
|
311
|
+
|
|
312
|
+
DB.initFromEnv();
|
|
313
|
+
|
|
314
|
+
(async () => {
|
|
315
|
+
await DB.connect();
|
|
316
|
+
})();
|
|
317
|
+
|
|
318
|
+
const app = express();
|
|
319
|
+
|
|
320
|
+
app.use(
|
|
321
|
+
session({
|
|
322
|
+
name: 'lamix.sid',
|
|
323
|
+
secret: process.env.SESSION_SECRET || 'dev-secret',
|
|
324
|
+
resave: false,
|
|
325
|
+
saveUninitialized: false,
|
|
326
|
+
store: new LamixSessionStore({
|
|
327
|
+
ttl: 60 * 60 * 24, // 1 day
|
|
328
|
+
}),
|
|
329
|
+
cookie: {
|
|
330
|
+
httpOnly: true,
|
|
331
|
+
secure: false, // true behind HTTPS
|
|
332
|
+
maxAge: 1000 * 60 * 60 * 24,
|
|
333
|
+
},
|
|
334
|
+
})
|
|
335
|
+
);
|
|
336
|
+
|
|
337
|
+
app.get('/', (req, res) => {
|
|
338
|
+
req.session.views = (req.session.views || 0) + 1;
|
|
339
|
+
res.json({ views: req.session.views });
|
|
340
|
+
});
|
|
341
|
+
|
|
342
|
+
app.listen(3000);
|
|
290
343
|
}
|