bgio-postgres
v1.0.15
Published
Postgres storage adapter for boardgame.io library
Downloads
107
Maintainers
Readme
bgio-postgres
- PostgreSQL storage adapter for boardgame.io
Usage
You can use the PostgresStore
in two ways.
Either provide credentials using a URI as the first argument, or by using an options object.
import { Server } from "boardgame.io/server";
import { PostgresStore } from "bgio-postgres";
// EITHER provide a URI
const db = new PostgresStore("postgresql://<username>:<password>@<host>/<database>");
// OR provide options
const db = new PostgresStore({
database: "database",
username: "username",
password: "password",
host: "host",
});
const server = Server({
games: [...],
db,
});
Optional Parameters
This adapter uses Sequelize as the ORM. Any additional options provided to PostgresStore
will be passed to the initialization arguments of the underlying Sequelize instance.
// EITHER provide options after the URI...
const db = new PostgresStore(
"postgresql://<username>:<password>@<host>/<database>",
{
logging: myLogger,
timezone: '+00:00',
}
);
// ...OR provide addition options with the credentials.
const db = new PostgresStore({
database: "database",
username: "username",
password: "password",
host: "host",
logging: myLogger,
timezone: '+00:00',
});
The full list of available options is documented in the Sequelize API Docs.
Using with MySQL or other databases
Because Sequelize is used by the adapter under the hood, which can also be used by other database models, it is in theory possible for this adapter to be used to connect to any of the supported sequelize databases. HOWEVER, there are a few important caveats:
- this adapter utilizes JSON data types to persist storage, which is not supported by all database models. At the time of writing this, Sequelize recognizes the JSON datatype for MySQL, Postgres and SQLite
- This library was not made with other database models in mind. While there have been reports of it working with MySQL, any reported issues with models other than Postgres will not be addressed. That being said, there doesn't seem to be a reason it should work any differently.
In order to use this adapter with another database, first install a node client for that database as a dependency (for example, npm install mysql2
for mysql).
Second, either provide credentials using a URI as the first argument:
const db = new PostgresStore("mysql://<username>:<password>@<host>/<database>");
or by using an options object. In this case, the option dialect: "<database_model>"
must be included.
const db = new PostgresStore({
database: "database",
username: "username",
password: "password",
host: "host",
dialect: "mysql",
});