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.
cvm/migrations/20160906073423_initial.js

52 lines
2.2 KiB
JavaScript

'use strict';
exports.up = function(knex, Promise) {
return Promise.all([
knex.schema.createTable("images", (table) => {
table.increments("id");
table.integer("userId").notNullable(); // user that added it
table.uuid("fileId").notNullable();
table.text("name");
table.text("description");
table.enum("sourceType", ["local", "http", "upload"]).notNullable();
table.text("source"); // URL, path, etc.
table.enum("imageType", ["disk", "tarball"]).notNullable(); // eg. tarballs for OpenVZ
table.boolean("public").notNullable(); // whether the image should be visible to everybody, or just its owner
table.boolean("isInstallMedium").notNullable(); // whether the image is just for installation (if not, it will be directly clonable)
}),
knex.schema.createTable("instances", (table) => {
table.increments("id");
table.integer("userId").notNullable();
table.integer("imageId");
table.integer("lastInstallationMediaId");
table.text("comment");
table.text("customIdentifier");
table.enum("virtualizationType", ["kvm"]).notNullable();
table.integer("memory").notNullable(); // in MB
table.integer("swap"); // in MB
table.integer("diskSpace").notNullable(); // in MB
table.integer("traffic"); // in MB
table.boolean("suspended").notNullable();
table.text("suspensionReason");
table.boolean("terminated").notNullable();
table.text("terminationReason");
table.boolean("running");
}),
knex.schema.createTable("users", (table) => {
table.increments("id");
table.text("username").notNullable();
table.text("hash").notNullable();
table.text("emailAddress").notNullable();
table.boolean("active").notNullable();
})
]);
};
exports.down = function(knex, Promise) {
return Promise.all([
knex.schema.dropTable("images"),
knex.schema.dropTable("instances"),
knex.schema.dropTable("users")
]);
};