const config = require('config'); exports.up = async (knex) => Promise.resolve() .then(() => knex.raw(` ALTER FUNCTION movies_photos(movie movies) RENAME TO movies_scenes_photos; ALTER FUNCTION series_photos(serie series) RENAME TO series_scenes_photos; `)) .then(() => knex.schema.createTable('movies_photos', (table) => { table.integer('movie_id', 16) .notNullable() .references('id') .inTable('movies') .onDelete('cascade'); table.text('media_id', 21) .notNullable() .references('id') .inTable('media'); table.unique(['movie_id', 'media_id']); })) .then(() => knex.schema.createTable('series_photos', (table) => { table.integer('serie_id', 16) .notNullable() .references('id') .inTable('series') .onDelete('cascade'); table.text('media_id', 21) .notNullable() .references('id') .inTable('media'); table.unique(['serie_id', 'media_id']); })) .then(() => knex.raw(` GRANT ALL ON ALL TABLES IN SCHEMA public TO :visitor; GRANT USAGE, SELECT ON ALL SEQUENCES IN SCHEMA public TO :visitor; `, { visitor: knex.raw(config.database.query.user), })); exports.down = async (knex) => knex.raw(` DROP TABLE IF EXISTS movies_photos CASCADE; DROP TABLE IF EXISTS series_photos CASCADE; ALTER FUNCTION movies_scenes_photos(movie movies) RENAME TO movies_photos; ALTER FUNCTION series_scenes_photos(serie series) RENAME TO series_photos; `);