Files
17th-UnitTracker-API/server.js
2023-05-17 16:57:30 -07:00

45 lines
1.2 KiB
JavaScript

const knex = require('knex');
const db2g = require('db2graphql');
const { ApolloServer } = require('@apollo/server');
const { startStandaloneServer } = require('@apollo/server/standalone');
// dotenv - not used if running in docker compose
// require('dotenv').config();
// get env variables
const { DB_HOST, DB_PORT, DB_USERNAME, DB_PASSWORD, DB_DATABASE } = process.env;
const start = async (cb) => {
/**************************************/
const api = new db2g('mariadb', knex({
client: 'mysql',
connection: {
host: DB_HOST,
port: DB_PORT,
user: DB_USERNAME,
password: DB_PASSWORD,
database: DB_DATABASE
}
}));
await api.connect(DB_DATABASE); // Connects to database and extracts database schema
// Get generated schema and resolvers
const schema = api.getSchema();
const resolvers = api.getResolvers();
/**************************************/
// Create Apollo Server and start
if (!schema) throw new Error('Error: empty schema');
console.log(schema);
const server = new ApolloServer({
typeDefs: schema,
resolvers,
introspection: true,
playground: true,
});
startStandaloneServer(server).then(({ url }) => {
console.log(`🚀 Server ready at ${url}`);
});
}
start();