getEnvironment() == "thetool") { // Main Project Table $projects = $this->table('WarehouseProject'); $projects->addColumn('projectNumber', 'string', ['limit' => 20, 'comment' => 'XP-YYYY-NNNN']) ->addColumn('title', 'string', ['limit' => 255]) ->addColumn('description', 'text', ['null' => true]) ->addColumn('startDate', 'integer', ['null' => true]) ->addColumn('endDate', 'integer', ['null' => true]) ->addColumn('status', 'enum', ['values' => ['new', 'wip', 'finished', 'cancelled'], 'default' => 'new']) ->addColumn('financials', 'decimal', ['precision' => 10, 'scale' => 2, 'default' => 0.00]) ->addColumn('storageLocation', 'string', ['limit' => 255, 'null' => true]) ->addColumn('externalTeam', 'text', ['null' => true, 'comment' => 'Free text for external participants']) ->addColumn('createdFromOrderId', 'integer', ['null' => true, 'signed' => false]) // FIX: Likely needs to match Order ID ->addColumn('createBy', 'integer', ['signed' => false]) // FIX: Likely references a User ID ->addColumn('create', 'integer') ->addIndex(['projectNumber'], ['unique' => true]) ->create(); // Tasks Table $tasks = $this->table('WarehouseProjectTask'); $tasks->addColumn('projectId', 'integer', ['signed' => false]) // <--- FIX HERE ->addColumn('parentTaskId', 'integer', ['null' => true, 'signed' => false]) // FIX: Good practice for self-referencing FKs ->addColumn('title', 'string', ['limit' => 255]) ->addColumn('description', 'text', ['null' => true]) ->addColumn('status', 'enum', ['values' => ['todo', 'in_progress', 'done'], 'default' => 'todo']) ->addColumn('assignedUserId', 'integer', ['null' => true, 'signed' => false]) // FIX: Matches User ID ->addColumn('order', 'integer', ['default' => 0]) ->addColumn('createBy', 'integer', ['signed' => false]) // FIX ->addColumn('create', 'integer') ->addForeignKey('projectId', 'WarehouseProject', 'id', ['delete' => 'CASCADE', 'update' => 'CASCADE']) ->create(); // Project Members (Internal Team) $members = $this->table('WarehouseProjectMember'); $members->addColumn('projectId', 'integer', ['signed' => false]) // <--- FIX HERE ->addColumn('userId', 'integer', ['signed' => false]) // FIX ->addColumn('role', 'string', ['limit' => 50, 'null' => true]) ->addColumn('create', 'integer') ->addForeignKey('projectId', 'WarehouseProject', 'id', ['delete' => 'CASCADE', 'update' => 'CASCADE']) ->create(); // Link table for Order Requests $orderRequests = $this->table('WarehouseProjectOrderRequest'); $orderRequests->addColumn('projectId', 'integer', ['signed' => false]) // <--- FIX HERE ->addColumn('orderRequestId', 'integer', ['signed' => false]) // FIX ->addColumn('create', 'integer') ->addForeignKey('projectId', 'WarehouseProject', 'id', ['delete' => 'CASCADE', 'update' => 'CASCADE']) ->addForeignKey('orderRequestId', 'WarehouseOrderRequest', 'id', ['delete' => 'CASCADE', 'update' => 'CASCADE']) ->create(); } } }