https://github.com/gx0r/connect-session-knex
A knex.js session store for express-session, supporting PostgreSQL, MySQL, MariaDB, Oracle and SQLite.
https://github.com/gx0r/connect-session-knex
express knex mysql nodejs oracle postgresql session sqlite
Last synced: 4 months ago
JSON representation
A knex.js session store for express-session, supporting PostgreSQL, MySQL, MariaDB, Oracle and SQLite.
- Host: GitHub
- URL: https://github.com/gx0r/connect-session-knex
- Owner: gx0r
- License: isc
- Created: 2014-07-01T17:58:02.000Z (over 11 years ago)
- Default Branch: main
- Last Pushed: 2023-11-04T13:54:38.000Z (about 2 years ago)
- Last Synced: 2024-05-17T14:41:53.273Z (over 1 year ago)
- Topics: express, knex, mysql, nodejs, oracle, postgresql, session, sqlite
- Language: JavaScript
- Homepage: https://www.npmjs.com/package/connect-session-knex
- Size: 749 KB
- Stars: 89
- Watchers: 3
- Forks: 64
- Open Issues: 22
-
Metadata Files:
- Readme: Readme.md
- Changelog: Changelog.md
- License: LICENSE
Awesome Lists containing this project
README
# Connect Session Knex
[![NPM Version][npm-version-image]][npm-url]
[![NPM Downloads][npm-downloads-image]][npm-url]
[![Node.js Version][node-image]][node-url]
[![NPM][npm-image]][npm-url]
connect-session-knex is an [express-session](https://github.com/expressjs/session) store backed by PostgreSQL, MySQL, MariaDB, MSSQL, Oracle or SQLite3, via the [knex.js](http://knexjs.org/) library.
## Installation
```sh
$ npm install connect-session-knex
```
## History
See [Changelog.md](Changelog.md)
## Usage
[Example application using the defaults](https://github.com/gx0r/connect-session-knex/blob/master/examples/example-mjs.mjs)
[Example application with PostgreSQL](https://github.com/gx0r/connect-session-knex/blob/master/examples/example-postgres.mjs)
## Options
- `cleanupInterval` milliseconds between clearing expired sessions. Defaults to 60000. 0 disables the automatic clearing of expired sessions.
- `createTable` if the table for sessions should be created automatically or not.
- `knex` knex instance to use. Defaults to a new knex instance, using sqlite3 with a file named 'connect-session-knex.sqlite'
- `tableName='sessions'` Tablename to use. Defaults to 'sessions'.
- `sidFieldName='sid'` Field name in table to use for storing session ids. Defaults to 'sid'.
If the table does not exist in the schema, this module will attempt to create it unless the `createTable` option is false.
If a knex instance is not provided, this module will attempt to create a sqlite3 database, with a file named `connect-session-knex.sqlite`, in the working directory of the process.
## Schema
### PostgreSQL or SQLite
#### Table Name "sessions"
| Column | Type | Modifiers | Storage |
| ------- | :----------------------: | :-------: | :------: |
| sid | character varying(255) | not null | extended |
| sess | json | not null | extended |
| expired | timestamp with time zone | not null | plain |
### Indexes:
```
"sessions_pkey" PRIMARY KEY, btree (sid)
"sessions_expired_index" btree (expired)
```
### MySQL
Table Name `sessions`.
| Column | Type | Modifiers |
| ------- | :----------: | :----------: |
| sid | VARCHAR(255) | NOT NULL, PK |
| sess | JSON | NOT NULL |
| expired | DATETIME | NOT NULL |
Command to manually create table:
```sql
CREATE TABLE `sessions` (
`sid` VARCHAR(255) NOT NULL,
`sess` JSON NOT NULL,
`expired` DATETIME NOT NULL,
PRIMARY KEY (`sid`));
```
[npm-version-image]: https://img.shields.io/npm/v/connect-session-knex.svg
[npm-downloads-image]: https://img.shields.io/npm/dm/connect-session-knex.svg
[npm-image]: https://nodei.co/npm/connect-session-knex.png?downloads=true&downloadRank=true&stars=true
[npm-url]: https://npmjs.org/package/connect-session-knex
[travis-image]: https://img.shields.io/travis/gx0r/connect-session-knex/master.svg
[travis-url]: https://travis-ci.org/gx0r/connect-session-knex
[node-image]: https://img.shields.io/node/v/connect-session-knex.svg
[node-url]: http://nodejs.org/download/
## Testing
Install Postgresql
Instructions for Ubuntu after intalling the db:
```bash
sudo -u postgres psql
```
```sql
CREATE DATABASE travis_ci_test OWNER postgres;
```
```sql
GRANT all privileges ON DATABASE travis_ci_test TO postgres;
```
```sql
ALTER USER postgres WITH PASSWORD 'postgres';
```
```sql
\q
```
Install Mysql
Instructions for Ubuntu after installing the db:
```bash
sudo mysql -u root
```
```sql
create user 'travis' identified by 'travis';
```
```sql
ALTER USER 'travis'@'localhost' IDENTIFIED BY 'travis';
```
```sql
create database travis_ci_test;
```
```sql
grant all on travis_ci_test.* to 'travis';
```
```sql
\q
```
```bash
sudo service mysql restart
```
Make sure both the MySQL and Postgres services are running
```bash
npm run test
```