Files
sineQL/test/index.js

88 lines
3.2 KiB
JavaScript

require('dotenv').config();
//setup database
const sequelize = require('./database');
const { books, authors } = require('./database/models');
//create the dummy data
sequelize.sync().then(async () => {
//*
// return; //DEBUG: delete this for debugging
await sequelize.query('DELETE FROM authors;');
await sequelize.query('DELETE FROM books;');
await authors.bulkCreate([
{ id: 1, name: 'Diana Gabaldon' },
{ id: 2, name: 'Emily Rodda' },
{ id: 3, name: 'Kenneth Grahame' }
]);
await books.bulkCreate([
{ id: 1, authorId: 1, title: 'Outlander', published: '1991', rating: 9.5 },
{ id: 2, authorId: 1, title: 'Dragonfly in Amber', published: '1992', rating: 9.5 },
{ id: 3, authorId: 1, title: 'Voyager', published: '1993', rating: 9.5 },
{ id: 4, authorId: 1, title: 'Drums of Autumn', published: '1996', rating: 9.5 },
{ id: 5, authorId: 1, title: 'The Fiery Cross', published: '2000', rating: 9.5 }, //Incorrect, the correct publish date is 2001
{ id: 6, authorId: 1, title: 'The Breath of Snow and Ashes', published: '2005', rating: 9.5 },
{ id: 7, authorId: 1, title: 'An Echo in the Bone', published: '2009', rating: 9.5 },
{ id: 8, authorId: 1, title: 'Written in my Own Heart\'s Blood', published: '2014', rating: 9.5 },
{ id: 9, authorId: 1, title: 'Go Tell the Bees That I Am Gone', published: null, rating: 9.5 },
{ id: 10, authorId: 2, title: 'The Forest of Silence', published: '2000', rating: 9.5 },
{ id: 11, authorId: 2, title: 'The Lake of Tears', published: '2000', rating: 9.5 },
{ id: 12, authorId: 2, title: 'The City of Rats', published: '2000', rating: 9.5 },
{ id: 13, authorId: 2, title: 'The Shifting Sands', published: '2000', rating: 9.5 },
{ id: 14, authorId: 2, title: 'Dread Mountain', published: '2000', rating: 9.5 },
{ id: 15, authorId: 2, title: 'The Maze of the Beast', published: '2000', rating: 9.5 },
{ id: 16, authorId: 2, title: 'The Valley of the Lost', published: '2000', rating: 9.5 },
{ id: 17, authorId: 2, title: 'Return to Del', published: '2000', rating: 9.5 },
{ id: 18, authorId: 3, title: 'The Wind in the Willows', published: '1908', rating: 9.5 },
]);
//*/
});
//input tools
const readline = require('readline');
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout,
terminal: false
});
const question = (prompt, def = null) => {
return new Promise((resolve, reject) => {
rl.question(`${prompt}${def ? ` (${def})` : ''}> `, answer => {
//loop on required
if (def === null && !answer) {
return resolve(question(prompt, def));
}
return resolve(answer || def);
});
});
};
//the library to test
const sineQL = require('../source/index.js');
//the arguments to the library
const schema = require('./handlers/schema');
const queryHandlers = require('./handlers/query-handlers');
const createHandlers = require('./handlers/create-handlers');
//run the setup function to create the closure (creates the type graph)
const sine = sineQL(schema, { queryHandlers, createHandlers }, { debug: false });
//actually ask the question
(async () => {
while(true) {
const answer = await question('sineQL');
const [code, result] = await sine(answer);
//normal response
if (code == 200) {
console.dir(result, { depth: null });
}
}
})();