You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
42 lines
1.3 KiB
JavaScript
42 lines
1.3 KiB
JavaScript
'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");
|
|
});
|
|
} |