Merge pull request #89 from vulcanize/feature/configurableMutations

Disable default mutations is now in config file
This commit is contained in:
ana0 2019-05-02 12:36:36 -04:00 committed by GitHub
commit 202fb6e6a6
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 13 additions and 6 deletions

View File

@ -23,8 +23,7 @@ Build the docker image in this directory. Start the `GraphiQL` frontend by:
* GraphiQL frontend is available at `:3000/graphiql` * GraphiQL frontend is available at `:3000/graphiql`
GraphQL endpoint is available at `:3000/graphql` GraphQL endpoint is available at `:3000/graphql`
By default, this build will expose only the "public" schema - to add other schemas, use either the env variables, By default, this build will expose only the "public" schema and will disable mutations - to change mutation behaviour, you can use an optional config file `config.toml` and set the env var `POSTGRAPHILE_CONFIG_PATH` to point to its location. Example `toml`:
or a config file `config.toml` and set the env var `CONFIG_PATH` to point to its location. Example `toml`:
``` ```
[database] [database]
@ -34,6 +33,7 @@ or a config file `config.toml` and set the env var `CONFIG_PATH` to point to its
gq_schemas = ["public", "yourschema"] gq_schemas = ["public", "yourschema"]
gq_user = "graphql" gq_user = "graphql"
gq_password = "graphql" gq_password = "graphql"
disable_default_mutations = false
``` ```
## Building ## Building

View File

@ -25,7 +25,8 @@ describe('buildServerConfig', () => {
host: 'example.com', host: 'example.com',
database: 'example_database', database: 'example_database',
schemas: ['public'], schemas: ['public'],
ownerConnectionString: 'postgres://admin:admin@host' ownerConnectionString: 'postgres://admin:admin@host',
disableDefaultMutations: true
}; };
postgraphileMiddleware = jasmine postgraphileMiddleware = jasmine

View File

@ -24,6 +24,7 @@ export function parseConfig(
let gqSchemas = ['public']; let gqSchemas = ['public'];
let gqUser = ''; let gqUser = '';
let gqPassword = ''; let gqPassword = '';
let disableDefaultMutations = true;
if (configPath) { if (configPath) {
const tomlContents = readCallback(`${configPath}`).toString(); const tomlContents = readCallback(`${configPath}`).toString();
@ -37,6 +38,9 @@ export function parseConfig(
gqSchemas = parsedToml['database']['gq_schemas']; gqSchemas = parsedToml['database']['gq_schemas'];
gqUser = parsedToml['database']['gq_user'] || gqUser; gqUser = parsedToml['database']['gq_user'] || gqUser;
gqPassword = parsedToml['database']['gq_password'] || gqPassword; gqPassword = parsedToml['database']['gq_password'] || gqPassword;
disableDefaultMutations = parsedToml['database']['disable_default_mutations'] === undefined
? true
: parsedToml['database']['disable_default_mutations'];
} }
// Overwrite config values with env. vars if such are set // Overwrite config values with env. vars if such are set
@ -69,6 +73,7 @@ export function parseConfig(
: `postgres://${user}:${password}@${host}:${port}`, : `postgres://${user}:${password}@${host}:${port}`,
database, database,
schemas: gqSchemas, schemas: gqSchemas,
ownerConnectionString: `postgres://${user}:${password}@${host}:${port}/${database}` ownerConnectionString: `postgres://${user}:${password}@${host}:${port}/${database}`,
disableDefaultMutations
}; };
} }

View File

@ -5,7 +5,7 @@ import {
PostgraphileOptions PostgraphileOptions
} from '../adapters/postgraphile'; } from '../adapters/postgraphile';
export const CONFIG_PATH_KEY = 'CONFIG_PATH'; export const CONFIG_PATH_KEY = 'POSTGRAPHILE_CONFIG_PATH';
export const SERVER_PORT_KEY = 'SERVER_PORT'; export const SERVER_PORT_KEY = 'SERVER_PORT';
const DEFAULT_SERVER_PORT = '3000'; const DEFAULT_SERVER_PORT = '3000';
@ -27,7 +27,7 @@ export function buildServerConfig(
const options: PostgraphileOptions = { const options: PostgraphileOptions = {
appendPlugins: [PgSimplifyInflectorPlugin], appendPlugins: [PgSimplifyInflectorPlugin],
disableDefaultMutations: true, disableDefaultMutations: databaseConfig.disableDefaultMutations,
enableCors: true, enableCors: true,
exportGqlSchemaPath: 'schema.graphql', exportGqlSchemaPath: 'schema.graphql',
graphiql: true, graphiql: true,

View File

@ -18,6 +18,7 @@ export interface DatabaseConfig {
database: string; database: string;
schemas: string[]; schemas: string[];
ownerConnectionString: string; ownerConnectionString: string;
disableDefaultMutations: boolean;
} }
export interface ServerConfig { export interface ServerConfig {