@moneypot/caas v9.0.0
@moneypot/caas
(caas = "controller as a server", a silly but hopefully memorable name.)
This library implements a controller server that manages users and balances across any number of Moneypot casinos.
You can use it to quickly create your own controller.
See https://github.com/moneypot/dice-controller/ for an example of how you can implement a dice game server by wrapping and extending @moneypot/caas
.
Install
$ npm install @moneypot/caas
Usage
import { defaultPlugins, ServerOptions, startAndListen } from "@moneypot/caas";
import path from "path";
const options: ServerOptions = {
// Name of the postgres schemas you're exposing to the GraphQL API (if any)
extraPgSchemas: ["app"],
plugins: [
...defaultPlugins,
// And any custom plugins you've written
],
// Where to save the GraphQL schema (derived from your database + plugins)
exportSchemaSDLPath: path.join(import.meta.dirname, "../schema.graphql"),
// Where your database migration files are located (if any)
userDatabaseMigrationsPath: path.join(import.meta.dirname, "../pg-versions"),
};
startAndListen(options, ({ port }) => {
console.log("Server is running on port", port);
});
Plugins
You can extend the GraphQL API with plugins.
@moneypot/caas
's comes with an array of defaultPlugins
that implements a few core GraphQL queries and mutations
that you probably want like caasAuthenticate()
. You'll notice that they're prefixed with caas
in the GraphQL API.
TODO: How to write a plugin
Migrations
To make it easier to keep your database in sync, @moneypot/caas
will autorun incremental migrations (.sql files) using
a simple library that expects consecutively numbered files in the given folder.
Example:
pg-versions
├── 001-schema.sql
├── 002-hashchain.sql
└── 003-dice.sql
TODO: How migrations work
Development
To work on the lib, there's a mini project in the ./demo
that uses @moneypot/caas
as a lib.
createdb caas_demo
Ensure this role exists:
CREATE ROLE app_postgraphile LOGIN PASSWORD 'pass';
Create .env
:
DATABASE_URL="postgres://app_postgraphile:pass@localhost/caas_demo"
SUPERUSER_DATABASE_URL="postgres://app_superuser:pass@localhost/caas_demo"
GRAPHILE_ENV=development
NODE_ENV=development
Run the demo:
cd demo
npm install
npm run dev
9 months ago
9 months ago
9 months ago
10 months ago
10 months ago
10 months ago
10 months ago
9 months ago
9 months ago
9 months ago
9 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
11 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
11 months ago