Fix ca version migration

We didn't do a check to see if the column already exists. Because of this, we get this error during migrations:

```
| migration file "20240802181855_ca-cert-version.ts" failed
infisical-db-migration  | migration failed with error: alter table "certificates" add column "caCertId" uuid null - column "caCertId" of relation "certificates" already exists
```
This commit is contained in:
Maidul Islam
2024-11-14 23:07:30 -07:00
parent 2d2ad0724f
commit 1295b68d80
2 changed files with 71 additions and 69 deletions

View File

@ -64,23 +64,25 @@ export async function up(knex: Knex): Promise<void> {
}
if (await knex.schema.hasTable(TableName.Certificate)) {
await knex.schema.alterTable(TableName.Certificate, (t) => {
t.uuid("caCertId").nullable();
t.foreign("caCertId").references("id").inTable(TableName.CertificateAuthorityCert);
});
const hasCaCertIdColumn = await knex.schema.hasColumn(TableName.Certificate, "caCertId");
if (!hasCaCertIdColumn) {
await knex.schema.alterTable(TableName.Certificate, (t) => {
t.uuid("caCertId").nullable();
t.foreign("caCertId").references("id").inTable(TableName.CertificateAuthorityCert);
});
await knex.raw(`
await knex.raw(`
UPDATE "${TableName.Certificate}" cert
SET "caCertId" = (
SELECT caCert.id
FROM "${TableName.CertificateAuthorityCert}" caCert
WHERE caCert."caId" = cert."caId"
)
`);
)`);
await knex.schema.alterTable(TableName.Certificate, (t) => {
t.uuid("caCertId").notNullable().alter();
});
await knex.schema.alterTable(TableName.Certificate, (t) => {
t.uuid("caCertId").notNullable().alter();
});
}
}
}

View File

@ -3,70 +3,70 @@ version: "3"
services:
db-migration:
container_name: infisical-db-migration
depends_on:
db:
condition: service_healthy
image: infisical/infisical:latest-postgres
# depends_on:
# db:
# condition: service_healthy
image: infisical/infisical:v0.94.0-postgres
env_file: .env
command: npm run migration:latest
pull_policy: always
networks:
- infisical
# networks:
# - infisical
backend:
container_name: infisical-backend
restart: unless-stopped
depends_on:
db:
condition: service_healthy
redis:
condition: service_started
db-migration:
condition: service_completed_successfully
image: infisical/infisical:latest-postgres
pull_policy: always
env_file: .env
ports:
- 80:8080
environment:
- NODE_ENV=production
networks:
- infisical
# backend:
# container_name: infisical-backend
# restart: unless-stopped
# depends_on:
# db:
# condition: service_healthy
# redis:
# condition: service_started
# db-migration:
# condition: service_completed_successfully
# image: infisical/infisical:latest-postgres
# pull_policy: always
# env_file: .env
# ports:
# - 80:8080
# environment:
# - NODE_ENV=production
# networks:
# - infisical
redis:
image: redis
container_name: infisical-dev-redis
env_file: .env
restart: always
environment:
- ALLOW_EMPTY_PASSWORD=yes
ports:
- 6379:6379
networks:
- infisical
volumes:
- redis_data:/data
# redis:
# image: redis
# container_name: infisical-dev-redis
# env_file: .env
# restart: always
# environment:
# - ALLOW_EMPTY_PASSWORD=yes
# ports:
# - 6379:6379
# networks:
# - infisical
# volumes:
# - redis_data:/data
db:
container_name: infisical-db
image: postgres:14-alpine
restart: always
env_file: .env
volumes:
- pg_data:/var/lib/postgresql/data
networks:
- infisical
healthcheck:
test: "pg_isready --username=${POSTGRES_USER} && psql --username=${POSTGRES_USER} --list"
interval: 5s
timeout: 10s
retries: 10
# db:
# container_name: infisical-db
# image: postgres:14-alpine
# restart: always
# env_file: .env
# volumes:
# - pg_data:/var/lib/postgresql/data
# networks:
# - infisical
# healthcheck:
# test: "pg_isready --username=${POSTGRES_USER} && psql --username=${POSTGRES_USER} --list"
# interval: 5s
# timeout: 10s
# retries: 10
volumes:
pg_data:
driver: local
redis_data:
driver: local
# volumes:
# pg_data:
# driver: local
# redis_data:
# driver: local
networks:
infisical:
# networks:
# infisical: