const fs = require('fs');
const {spawn} = require('child_process');

function watchDatabaseChanges() {
    console.log('Watching for changes in db/routines and db/versions');
    fs.watch('db', {recursive: true}, (eventType, filename) => {
        if (filename.endsWith('.sql')) {
            let command;
            if (filename.startsWith('routines')) command = 'push';
            else if (filename.startsWith('versions')) command = 'run';

            if (command) {
                const process = spawn('myt', [command]);
                process.stdout.on('data', data => console.log(data.toString()));
                process.stderr.on('data', data => console.error(`stderr: ${data}`));
                process.on('error', error => console.error(`error: ${error.message}`));
                process.on('close', () => console.log('Watching for changes in db/routines and db/versions'));
            }
        }
    });
}

if (require.main === module) watchDatabaseChanges();
module.exports = watchDatabaseChanges;