diff --git a/server/src/api.ts b/server/src/api.ts new file mode 100644 index 0000000000000000000000000000000000000000..91f1224a3d6e25d6d5b531ac0d6b1458992a6b94 --- /dev/null +++ b/server/src/api.ts @@ -0,0 +1,30 @@ + +import express, { Request, Response, NextFunction } from 'express'; +import { json as bodyJson } from 'body-parser'; +import fileupload from 'express-fileupload'; + +import { addDefaultHeaders } from './headers'; +import v1 from './v1'; + +export const api = express(); + +api.use(addDefaultHeaders); +api.use(bodyJson()); +api.use(fileupload()); + +api.use('/v1', v1); + +api.use((_req, res) => { + res.status(404).json({ + status: 'error', + message: 'unknown resource', + }); +}); + +api.use((err: Error, _req: Request, res: Response, _next: NextFunction) => { + return res.status(400).json({ + status: 'error', + message: err.message, + }); +}); + diff --git a/server/src/config.ts b/server/src/config.ts index 0e758a19ab66213d1c2dcf892ac34c82b22d2270..54cb20af8b3e180a815414755094884f807d7e05 100644 --- a/server/src/config.ts +++ b/server/src/config.ts @@ -11,7 +11,7 @@ export const keys = { export const allowedOrigins = [ "*" ]; -export const environment = (env.NODE_ENV ?? 'development') as ('development' | 'staging' | 'production'); +export const environment = (env.NODE_ENV ?? 'development') as ('development' | 'testing' | 'staging' | 'production'); export const web_serve = '../client/build/'; diff --git a/server/src/index.ts b/server/src/index.ts index eade34b2b2cffa3c14560499a87455dde75be8a3..8d53d6cecadaa2ba8462d814ad496cc4c8b42479 100644 --- a/server/src/index.ts +++ b/server/src/index.ts @@ -1,37 +1,15 @@ -import express, { Request, Response, NextFunction } from 'express'; -import { json as bodyJson } from 'body-parser'; -import fileupload from 'express-fileupload'; - +import express from 'express'; +import { api } from './api'; import { port, web_serve } from './config'; -import { addDefaultHeaders } from './headers'; -import v1 from './v1'; const app = express(); -app.use(addDefaultHeaders); -app.use(bodyJson()); -app.use(fileupload()); - -app.use('/v1', v1); - if (web_serve) { app.use('/', express.static(web_serve)); } -app.use((_req, res) => { - res.status(404).json({ - status: 'error', - message: 'unknown resource', - }); -}); - -app.use((err: Error, _req: Request, res: Response, _next: NextFunction) => { - return res.status(400).json({ - status: 'error', - message: err.message, - }); -}); +app.use(api); app.listen(port); diff --git a/server/src/knexconfig.ts b/server/src/knexconfig.ts index 66f12382c2c193d850168b9caeeded6e57a46b0d..846b796a99d462b8a49f482092e26afa842b2466 100644 --- a/server/src/knexconfig.ts +++ b/server/src/knexconfig.ts @@ -4,6 +4,10 @@ import { join } from 'path'; import { parse } from 'pg-connection-string'; const pgconfig: any = parse(env.DATABASE_URL ?? 'postgresql://postgres@localhost/ryoko'); +const migrations = { + tableName: "knex_migrations", + directory: join(__dirname, 'migrations'), +}; export default { development: { @@ -11,9 +15,12 @@ export default { connection: { filename: "./dev.sqlite3", }, - migrations: { - tableName: "knex_migrations", - directory: join(__dirname, 'migrations'), + migrations: migrations, + }, + testing: { + client: "sqlite3", + connection: { + filename: ":memory:", }, }, staging: { @@ -23,10 +30,7 @@ export default { min: 2, max: 10, }, - migrations: { - tableName: "knex_migrations", - directory: join(__dirname, 'migrations'), - }, + migrations: migrations, }, production: { client: "postgresql", @@ -40,10 +44,7 @@ export default { min: 2, max: 10, }, - migrations: { - tableName: "knex_migrations", - directory: join(__dirname, 'migrations'), - }, + migrations: migrations, } };