1
0
Files
bigcapital/packages/server-nest/src/database/migrations/20220429121920_create_projects_table.ts
T
2025-04-02 12:04:03 +02:00

94 lines
2.6 KiB
TypeScript

exports.up = (knex) => {
return knex.schema
.createTable('projects', (table) => {
table.increments('id').comment('Auto-generated id');
table.string('name');
table.integer('contact_id').unsigned();
table.date('deadline');
table.decimal('cost_estimate');
table.string('status');
table.timestamps();
})
.createTable('tasks', (table) => {
table.increments('id').comment('Auto-generated id');
table.string('name');
table.string('charge_type');
table.decimal('rate');
table.decimal('estimate_hours').unsigned();
table.decimal('actual_hours').unsigned();
table.decimal('invoiced_hours').unsigned().default(0);
table
.integer('project_id')
.unsigned()
.references('id')
.inTable('projects');
table.timestamps();
})
.createTable('times', (table) => {
table.increments('id').comment('Auto-generated id');
table.integer('duration').unsigned();
table.string('description');
table.date('date');
table.integer('taskId').unsigned().references('id').inTable('tasks');
table
.integer('project_id')
.unsigned()
.references('id')
.inTable('projects');
table.timestamps();
})
.table('accounts_transactions', (table) => {
table
.integer('projectId')
.unsigned()
.references('id')
.inTable('projects');
})
.table('manual_journals_entries', (table) => {
table
.integer('projectId')
.unsigned()
.references('id')
.inTable('projects');
})
.table('bills', (table) => {
table
.integer('projectId')
.unsigned()
.references('id')
.inTable('projects');
table.decimal('invoiced_amount').unsigned().defaultTo(0);
})
.table('items_entries', (table) => {
table
.integer('projectId')
.unsigned()
.references('id')
.inTable('projects');
table.integer('project_ref_id').unsigned();
table.string('project_ref_type');
table.decimal('project_ref_invoiced_amount').unsigned().defaultTo(0);
})
.table('sales_invoices', (table) => {
table
.integer('projectId')
.unsigned()
.references('id')
.inTable('projects');
})
.table('expenses_transactions', (table) => {
table
.integer('projectId')
.unsigned()
.references('id')
.inTable('projects');
table.decimal('invoiced_amount').unsigned().defaultTo(0);
});
};
exports.down = (knex) => {
return knex.schema.dropTable('tasks');
};