'use strict'; module.exports.up = function(knex, Promise) { return Promise.try(() => { return knex.schema.createTable("scrapers", (table) => { table.increments("id").primary(); table.text("name").unique(); }); }).then(() => { return knex.schema.createTable("urls", (table) => { table.bigIncrements("id").primary(); table.integer("scraper_id").references("scrapers.id").notNull(); table.bigInteger("parent_id").references("urls.id"); table.integer("depth").notNull(); table.boolean("scraped").notNull().defaultTo(false); table.text("url").notNull(); table.text("description"); table.jsonb("metadata"); table.timestamp("scraped_at"); }); }).then(() => { return knex.schema.createTable("items", (table) => { table.bigIncrements("id").primary(); table.integer("scraper_id").references("scrapers.id").notNull(); table.bigInteger("url_id").references("urls.id").notNull(); table.boolean("processed").notNull().defaultTo(false); table.boolean("is_partial").notNull(); table.jsonb("data"); table.timestamp("scraped_at"); }); }); } module.exports.down = function(knex, Promise) { return Promise.try(() => { return knex.schema.dropTable("items"); }).then(() => { return knex.schema.dropTable("urls"); }).then(() => { return knex.schema.dropTable("scrapers"); }); }