Some checks are pending
Bidi Control Character Guard / bidi-control-guard (push) Waiting to run
Circular Dependency Check / Check for new circular dependencies (push) Waiting to run
Citus Migration Smoke / Combined migrations on single-node Citus (push) Waiting to run
E2E Fresh Install Tests / fresh-install-e2e (push) Waiting to run
ext-v2 guardrails / Run ext-v2 guard and ESLint (push) Waiting to run
Integration Tests / Check for relevant changes (push) Waiting to run
Integration Tests / ${{ (github.event_name == 'schedule' || github.event.inputs.suite == 'full') && 'Full integration suite' || 'Tier-1 integration subset' }} (push) Blocked by required conditions
Mobile checks / Mobile lint + typecheck (push) Waiting to run
Mobile checks / Mobile unit tests (push) Waiting to run
Mobile checks / Mobile dependency audit (report) (push) Waiting to run
Mobile checks / Mobile reproducibility checks (push) Waiting to run
Secrets guard (env backups) / Ensure no tracked env backup files (push) Waiting to run
Temporal Readiness / fast-readiness (push) Waiting to run
Temporal Readiness / docker-parity (push) Waiting to run
TypeScript Type Check / Nx affected typecheck (push) Waiting to run
Unit Tests / Skipped-test budget (push) Waiting to run
Unit Tests / Nx affected unit tests (push) Waiting to run
Unit Tests / Server unit coverage (informational) (push) Waiting to run
Validate Tenant Management Schema / Check for relevant changes (push) Waiting to run
Validate Tenant Management Schema / Validate Tenant Management Schema (push) Blocked by required conditions
EE Workflows Build Guard / ee-workflows-build-guard (push) Waiting to run
Excluded: .git, node_modules, secrets/, compose.env, assemblyscript tgz Source: /opt/alga-psa on psa.joliet.tech
74 lines
2.8 KiB
JavaScript
74 lines
2.8 KiB
JavaScript
/**
|
|
* Add client_portal_config JSONB column to projects and project_templates tables
|
|
*/
|
|
exports.config = { transaction: false };
|
|
|
|
const DEFAULT_CLIENT_PORTAL_CONFIG = {
|
|
show_phases: false,
|
|
show_phase_completion: false,
|
|
show_tasks: false,
|
|
visible_task_fields: ['task_name', 'due_date', 'status']
|
|
};
|
|
|
|
exports.up = async function(knex) {
|
|
console.log('Adding client_portal_config column to projects and project_templates...');
|
|
|
|
// Add to projects table
|
|
await knex.schema.alterTable('projects', (table) => {
|
|
table.jsonb('client_portal_config').defaultTo(JSON.stringify(DEFAULT_CLIENT_PORTAL_CONFIG));
|
|
});
|
|
console.log(' ✓ Added client_portal_config to projects table');
|
|
|
|
// Backfill existing projects with default config
|
|
// CitusDB requires select-then-update pattern with tenant in WHERE clause
|
|
const projectsToUpdate = await knex('projects')
|
|
.select('project_id', 'tenant')
|
|
.whereNull('client_portal_config');
|
|
|
|
for (const record of projectsToUpdate) {
|
|
await knex('projects')
|
|
.where('project_id', record.project_id)
|
|
.andWhere('tenant', record.tenant)
|
|
.update({ client_portal_config: JSON.stringify(DEFAULT_CLIENT_PORTAL_CONFIG) });
|
|
}
|
|
console.log(` ✓ Updated ${projectsToUpdate.length} existing projects with default config`);
|
|
|
|
// Add to project_templates table
|
|
await knex.schema.alterTable('project_templates', (table) => {
|
|
table.jsonb('client_portal_config').defaultTo(JSON.stringify(DEFAULT_CLIENT_PORTAL_CONFIG));
|
|
});
|
|
console.log(' ✓ Added client_portal_config to project_templates table');
|
|
|
|
// Backfill existing templates with default config
|
|
// CitusDB requires select-then-update pattern with tenant in WHERE clause
|
|
const templatesToUpdate = await knex('project_templates')
|
|
.select('template_id', 'tenant')
|
|
.whereNull('client_portal_config');
|
|
|
|
for (const record of templatesToUpdate) {
|
|
await knex('project_templates')
|
|
.where('template_id', record.template_id)
|
|
.andWhere('tenant', record.tenant)
|
|
.update({ client_portal_config: JSON.stringify(DEFAULT_CLIENT_PORTAL_CONFIG) });
|
|
}
|
|
console.log(` ✓ Updated ${templatesToUpdate.length} existing templates with default config`);
|
|
|
|
console.log('Client portal config columns added successfully');
|
|
};
|
|
|
|
exports.down = async function(knex) {
|
|
console.log('Dropping client_portal_config columns...');
|
|
|
|
await knex.schema.alterTable('projects', (table) => {
|
|
table.dropColumn('client_portal_config');
|
|
});
|
|
console.log(' ✓ Dropped client_portal_config from projects table');
|
|
|
|
await knex.schema.alterTable('project_templates', (table) => {
|
|
table.dropColumn('client_portal_config');
|
|
});
|
|
console.log(' ✓ Dropped client_portal_config from project_templates table');
|
|
|
|
console.log('Client portal config columns dropped successfully');
|
|
};
|