Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
25 changes: 18 additions & 7 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -6,21 +6,28 @@ TARGET ?= local
ENVIRONMENT ?= local
ROWS ?= 1000

ifeq ($(ENVIRONMENT),prod)
SUFIX = db
### So o ambiente "qa" usa sufixo -- local e prod usam o nome puro do
### banco (coredb/authdb), cada um no seu proprio host. Confirmado contra
### os secrets reais do Infisical (infra-platform/scripts/extract-env.ps1).
ifeq ($(ENVIRONMENT),qa)
SUFIX = qa
else
SUFIX = dbqa
SUFIX =
endif

DATABASE_URI = postgresql://$(USER):$(PASSWORD)@$(HOST):$(PORT)/$(TARGET)$(SUFIX)
DB_NAME = $(TARGET)db$(SUFIX)
DATABASE_URI = postgresql://$(USER):$(PASSWORD)@$(HOST):$(PORT)/$(DB_NAME)
### reset precisa de uma conexao de manutencao -- nao da pra DROP DATABASE
### estando conectado nele mesmo.
MAINT_URI = postgresql://$(USER):$(PASSWORD)@$(HOST):$(PORT)/postgres

### Syntax Examples:
### - make {command} TARGET={database} ENVIRONMENT={environment}

PSQL = psql "$(DATABASE_URI)" -f

migrate:
$(PSQL) migrations/V1__create_$(TARGET)_schema.sql
$(PSQL) db/$(TARGET)/migrations/V1__create_$(TARGET)_schema.sql

schema:
$(PSQL) db/$(TARGET)/schema.sql
Expand All @@ -35,14 +42,18 @@ enums:
$(PSQL) db/$(TARGET)/enums.sql

reset:
$(PSQL) db/reset.sql -v DB=$(TARGET)
psql "$(MAINT_URI)" -f db/reset.sql -v DB=$(DB_NAME)
$(PSQL) db/$(TARGET)/schema.sql
$(PSQL) db/$(TARGET)/enums.sql
$(PSQL) db/$(TARGET)/seed.sql
$(PSQL) db/$(TARGET)/indexes.sql

### dataload nao usa TARGET: auth_user/users compartilham UUID entre
### coredb e authdb, entao sempre popula os dois bancos juntos (ver
### scripts/dataload.py -- AUTH_STEPS roda contra authdb, CORE_STEPS
### contra coredb, na mesma execucao).
dataload:
python -m scripts.dataload $(TARGET) $(ROWS)
python -m scripts.dataload $(ROWS)

backup:
pg_dump "$(DATABASE_URI)" > db/$(TARGET)/backup.sql
Expand Down
65 changes: 42 additions & 23 deletions db/core/migrations/V1__create_core_schema.sql
Original file line number Diff line number Diff line change
Expand Up @@ -145,7 +145,7 @@
CREATE TABLE position (
id UUID NOT NULL DEFAULT gen_random_uuid(),
name VARCHAR(12) NOT NULL,
accesses TEXT NOT NULL,
accesses VARCHAR(255) NOT NULL,

Check warning on line 148 in db/core/migrations/V1__create_core_schema.sql

View check run for this annotation

SonarQubeCloud / SonarCloud Code Analysis

Use VARCHAR2 instead of VARCHAR.

See more on https://sonarcloud.io/project/issues?id=Solierrr_database-console&issues=AaCSnt-LnwuLUAdK3Ab5&open=AaCSnt-LnwuLUAdK3Ab5&pullRequest=13

CONSTRAINT pk_position PRIMARY KEY (id)
);
Expand Down Expand Up @@ -191,16 +191,6 @@
CONSTRAINT pk_company_plans PRIMARY KEY (id)
);

CREATE TABLE certification (
id UUID NOT NULL DEFAULT gen_random_uuid(),
name VARCHAR(100),
issuer VARCHAR(100),
validity TIMESTAMP,
description TEXT,

CONSTRAINT pk_certification PRIMARY KEY (id)
);

-- auth_id referencia auth_user.id no banco do api-auth (outro
-- microsservico/banco) -- sem FK real aqui de proposito, so o valor solto.
-- username = handle publico do usuario (ex.: "@joaosilva"), sempre minusculo
Expand All @@ -225,8 +215,8 @@
CREATE TABLE company (
id UUID NOT NULL DEFAULT gen_random_uuid(),
status company_status NOT NULL DEFAULT 'UNDER_ANALYSIS',
fk_address UUID,
fk_business_contact UUID,
fk_address UUID NOT NULL,
fk_business_contact UUID NOT NULL,
cnpj VARCHAR(14) NOT NULL,
trade_name VARCHAR(120) NOT NULL,
corporate_name VARCHAR(120) NOT NULL,
Expand Down Expand Up @@ -287,6 +277,17 @@
REFERENCES company (id)
);

-- Marca uma empresa como prestadora de servico tecnico (alem de
-- fornecedora/solicitante). Sem seed proprio ainda -- ver acompanhamento.
CREATE TABLE technical_company (
id UUID NOT NULL DEFAULT gen_random_uuid(),
fk_company UUID NOT NULL,

CONSTRAINT pk_technical_company PRIMARY KEY (id),
CONSTRAINT fk_technical_company_company FOREIGN KEY (fk_company)
REFERENCES company (id)
);

CREATE TABLE technician (
id UUID NOT NULL DEFAULT gen_random_uuid(),
fk_person UUID NOT NULL,
Expand All @@ -297,6 +298,24 @@
REFERENCES person (id)
);

-- Certificacao tecnica de um tecnico especifico (ex.: NR-10, NR-35).
-- "type" e o rotulo curto/categoria; "name"/"issuer" sao complementares.
CREATE TABLE certification (
id UUID NOT NULL DEFAULT gen_random_uuid(),
fk_technician UUID NOT NULL,
type VARCHAR(255) NOT NULL,

Check warning on line 306 in db/core/migrations/V1__create_core_schema.sql

View check run for this annotation

SonarQubeCloud / SonarCloud Code Analysis

Use VARCHAR2 instead of VARCHAR.

See more on https://sonarcloud.io/project/issues?id=Solierrr_database-console&issues=AaCSnt-LnwuLUAdK3Ab6&open=AaCSnt-LnwuLUAdK3Ab6&pullRequest=13
information TEXT NOT NULL,
image TEXT,
description TEXT,
issuer VARCHAR(100),
name VARCHAR(100),
validity TIMESTAMP,

CONSTRAINT pk_certification PRIMARY KEY (id),
CONSTRAINT fk_certification_technician FOREIGN KEY (fk_technician)
REFERENCES technician (id)
);

-- Tabela associativa company <-> users, com o cargo do usuario na empresa.
CREATE TABLE user_company (
id UUID NOT NULL DEFAULT gen_random_uuid(),
Expand Down Expand Up @@ -359,7 +378,7 @@

CREATE TABLE technician_affiliation (
id UUID NOT NULL DEFAULT gen_random_uuid(),
fk_company UUID,
fk_company UUID NOT NULL,
fk_technician UUID NOT NULL,
affiliation_type technical_affiliation_type NOT NULL,
active BOOLEAN NOT NULL DEFAULT true,
Expand Down Expand Up @@ -467,7 +486,7 @@
CREATE TABLE local_unit (
id UUID NOT NULL DEFAULT gen_random_uuid(),
fk_requester UUID NOT NULL,
fk_address UUID,
fk_address UUID NOT NULL,
complement VARCHAR(255),
location_type location_type NOT NULL,

Expand All @@ -481,8 +500,8 @@
CREATE TABLE unit_specifications (
id UUID NOT NULL DEFAULT gen_random_uuid(),
fk_local_unit UUID NOT NULL,
specifications TEXT,
location_photos TEXT,
specifications VARCHAR(255),

Check warning on line 503 in db/core/migrations/V1__create_core_schema.sql

View check run for this annotation

SonarQubeCloud / SonarCloud Code Analysis

Use VARCHAR2 instead of VARCHAR.

See more on https://sonarcloud.io/project/issues?id=Solierrr_database-console&issues=AaCSnt-LnwuLUAdK3Ab7&open=AaCSnt-LnwuLUAdK3Ab7&pullRequest=13
location_photos VARCHAR(255),

Check warning on line 504 in db/core/migrations/V1__create_core_schema.sql

View check run for this annotation

SonarQubeCloud / SonarCloud Code Analysis

Use VARCHAR2 instead of VARCHAR.

See more on https://sonarcloud.io/project/issues?id=Solierrr_database-console&issues=AaCSnt-LnwuLUAdK3Ab8&open=AaCSnt-LnwuLUAdK3Ab8&pullRequest=13
date TIMESTAMPTZ NOT NULL,

CONSTRAINT pk_unit_specifications PRIMARY KEY (id),
Expand All @@ -495,10 +514,10 @@
-- -----------------------------------------------------------------------------
CREATE TABLE technical_project (
id UUID NOT NULL DEFAULT gen_random_uuid(),
fk_requester UUID,
fk_local_unit UUID,
status service_status,
start_date TIMESTAMPTZ,
fk_requester UUID NOT NULL,
fk_local_unit UUID NOT NULL,
status service_status NOT NULL DEFAULT 'OPEN',
start_date TIMESTAMPTZ NOT NULL DEFAULT now(),
end_date TIMESTAMP,

CONSTRAINT pk_technical_project PRIMARY KEY (id),
Expand Down Expand Up @@ -563,7 +582,7 @@
fk_reviewer UUID NOT NULL,
fk_service UUID NOT NULL,
rating NUMERIC(2, 1) NOT NULL,
comment TEXT,
comment VARCHAR(255),

Check warning on line 585 in db/core/migrations/V1__create_core_schema.sql

View check run for this annotation

SonarQubeCloud / SonarCloud Code Analysis

Use VARCHAR2 instead of VARCHAR.

See more on https://sonarcloud.io/project/issues?id=Solierrr_database-console&issues=AaCSnt-LnwuLUAdK3Ab9&open=AaCSnt-LnwuLUAdK3Ab9&pullRequest=13
active BOOLEAN NOT NULL DEFAULT true,
created_at TIMESTAMPTZ NOT NULL DEFAULT now(),

Expand Down Expand Up @@ -609,7 +628,7 @@
id UUID NOT NULL DEFAULT gen_random_uuid(),
fk_requester UUID NOT NULL,
status proposal_status NOT NULL DEFAULT 'AWAITING_SUPPLIER',
notes TEXT,
notes VARCHAR(255),

Check warning on line 631 in db/core/migrations/V1__create_core_schema.sql

View check run for this annotation

SonarQubeCloud / SonarCloud Code Analysis

Use VARCHAR2 instead of VARCHAR.

See more on https://sonarcloud.io/project/issues?id=Solierrr_database-console&issues=AaCSnt-LnwuLUAdK3Ab-&open=AaCSnt-LnwuLUAdK3Ab-&pullRequest=13
total_amount NUMERIC,
created_at TIMESTAMPTZ NOT NULL DEFAULT now(),
updated_at TIMESTAMPTZ,
Expand Down
65 changes: 42 additions & 23 deletions db/core/schema.sql
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,7 @@
CREATE TABLE position (
id UUID NOT NULL DEFAULT gen_random_uuid(),
name VARCHAR(12) NOT NULL,
accesses TEXT NOT NULL,
accesses VARCHAR(255) NOT NULL,

Check warning on line 64 in db/core/schema.sql

View check run for this annotation

SonarQubeCloud / SonarCloud Code Analysis

Use VARCHAR2 instead of VARCHAR.

See more on https://sonarcloud.io/project/issues?id=Solierrr_database-console&issues=AaCSnt61nwuLUAdK3Abz&open=AaCSnt61nwuLUAdK3Abz&pullRequest=13

CONSTRAINT pk_position PRIMARY KEY (id)
);
Expand Down Expand Up @@ -107,16 +107,6 @@
CONSTRAINT pk_company_plans PRIMARY KEY (id)
);

CREATE TABLE certification (
id UUID NOT NULL DEFAULT gen_random_uuid(),
name VARCHAR(100),
issuer VARCHAR(100),
validity TIMESTAMP,
description TEXT,

CONSTRAINT pk_certification PRIMARY KEY (id)
);

-- auth_id referencia auth_user.id no banco do api-auth (outro
-- microsservico/banco) -- sem FK real aqui de proposito, so o valor solto.
-- username = handle publico do usuario (ex.: "@joaosilva"), sempre minusculo
Expand All @@ -141,8 +131,8 @@
CREATE TABLE company (
id UUID NOT NULL DEFAULT gen_random_uuid(),
status company_status NOT NULL DEFAULT 'UNDER_ANALYSIS',
fk_address UUID,
fk_business_contact UUID,
fk_address UUID NOT NULL,
fk_business_contact UUID NOT NULL,
cnpj VARCHAR(14) NOT NULL,
trade_name VARCHAR(120) NOT NULL,
corporate_name VARCHAR(120) NOT NULL,
Expand Down Expand Up @@ -203,6 +193,17 @@
REFERENCES company (id)
);

-- Marca uma empresa como prestadora de servico tecnico (alem de
-- fornecedora/solicitante). Sem seed proprio ainda -- ver acompanhamento.
CREATE TABLE technical_company (
id UUID NOT NULL DEFAULT gen_random_uuid(),
fk_company UUID NOT NULL,

CONSTRAINT pk_technical_company PRIMARY KEY (id),
CONSTRAINT fk_technical_company_company FOREIGN KEY (fk_company)
REFERENCES company (id)
);

CREATE TABLE technician (
id UUID NOT NULL DEFAULT gen_random_uuid(),
fk_person UUID NOT NULL,
Expand All @@ -213,6 +214,24 @@
REFERENCES person (id)
);

-- Certificacao tecnica de um tecnico especifico (ex.: NR-10, NR-35).
-- "type" e o rotulo curto/categoria; "name"/"issuer" sao complementares.
CREATE TABLE certification (
id UUID NOT NULL DEFAULT gen_random_uuid(),
fk_technician UUID NOT NULL,
type VARCHAR(255) NOT NULL,

Check warning on line 222 in db/core/schema.sql

View check run for this annotation

SonarQubeCloud / SonarCloud Code Analysis

Use VARCHAR2 instead of VARCHAR.

See more on https://sonarcloud.io/project/issues?id=Solierrr_database-console&issues=AaCSnt61nwuLUAdK3Ab0&open=AaCSnt61nwuLUAdK3Ab0&pullRequest=13
information TEXT NOT NULL,
image TEXT,
description TEXT,
issuer VARCHAR(100),
name VARCHAR(100),
validity TIMESTAMP,

CONSTRAINT pk_certification PRIMARY KEY (id),
CONSTRAINT fk_certification_technician FOREIGN KEY (fk_technician)
REFERENCES technician (id)
);

-- Tabela associativa company <-> users, com o cargo do usuario na empresa.
CREATE TABLE user_company (
id UUID NOT NULL DEFAULT gen_random_uuid(),
Expand Down Expand Up @@ -275,7 +294,7 @@

CREATE TABLE technician_affiliation (
id UUID NOT NULL DEFAULT gen_random_uuid(),
fk_company UUID,
fk_company UUID NOT NULL,
fk_technician UUID NOT NULL,
affiliation_type technical_affiliation_type NOT NULL,
active BOOLEAN NOT NULL DEFAULT true,
Expand Down Expand Up @@ -383,7 +402,7 @@
CREATE TABLE local_unit (
id UUID NOT NULL DEFAULT gen_random_uuid(),
fk_requester UUID NOT NULL,
fk_address UUID,
fk_address UUID NOT NULL,
complement VARCHAR(255),
location_type location_type NOT NULL,

Expand All @@ -397,8 +416,8 @@
CREATE TABLE unit_specifications (
id UUID NOT NULL DEFAULT gen_random_uuid(),
fk_local_unit UUID NOT NULL,
specifications TEXT,
location_photos TEXT,
specifications VARCHAR(255),

Check warning on line 419 in db/core/schema.sql

View check run for this annotation

SonarQubeCloud / SonarCloud Code Analysis

Use VARCHAR2 instead of VARCHAR.

See more on https://sonarcloud.io/project/issues?id=Solierrr_database-console&issues=AaCSnt61nwuLUAdK3Ab1&open=AaCSnt61nwuLUAdK3Ab1&pullRequest=13
location_photos VARCHAR(255),

Check warning on line 420 in db/core/schema.sql

View check run for this annotation

SonarQubeCloud / SonarCloud Code Analysis

Use VARCHAR2 instead of VARCHAR.

See more on https://sonarcloud.io/project/issues?id=Solierrr_database-console&issues=AaCSnt61nwuLUAdK3Ab2&open=AaCSnt61nwuLUAdK3Ab2&pullRequest=13
date TIMESTAMPTZ NOT NULL,

CONSTRAINT pk_unit_specifications PRIMARY KEY (id),
Expand All @@ -411,10 +430,10 @@
-- -----------------------------------------------------------------------------
CREATE TABLE technical_project (
id UUID NOT NULL DEFAULT gen_random_uuid(),
fk_requester UUID,
fk_local_unit UUID,
status service_status,
start_date TIMESTAMPTZ,
fk_requester UUID NOT NULL,
fk_local_unit UUID NOT NULL,
status service_status NOT NULL DEFAULT 'OPEN',
start_date TIMESTAMPTZ NOT NULL DEFAULT now(),
end_date TIMESTAMP,

CONSTRAINT pk_technical_project PRIMARY KEY (id),
Expand Down Expand Up @@ -479,7 +498,7 @@
fk_reviewer UUID NOT NULL,
fk_service UUID NOT NULL,
rating NUMERIC(2, 1) NOT NULL,
comment TEXT,
comment VARCHAR(255),

Check warning on line 501 in db/core/schema.sql

View check run for this annotation

SonarQubeCloud / SonarCloud Code Analysis

Use VARCHAR2 instead of VARCHAR.

See more on https://sonarcloud.io/project/issues?id=Solierrr_database-console&issues=AaCSnt61nwuLUAdK3Ab3&open=AaCSnt61nwuLUAdK3Ab3&pullRequest=13
active BOOLEAN NOT NULL DEFAULT true,
created_at TIMESTAMPTZ NOT NULL DEFAULT now(),

Expand Down Expand Up @@ -525,7 +544,7 @@
id UUID NOT NULL DEFAULT gen_random_uuid(),
fk_requester UUID NOT NULL,
status proposal_status NOT NULL DEFAULT 'AWAITING_SUPPLIER',
notes TEXT,
notes VARCHAR(255),

Check warning on line 547 in db/core/schema.sql

View check run for this annotation

SonarQubeCloud / SonarCloud Code Analysis

Use VARCHAR2 instead of VARCHAR.

See more on https://sonarcloud.io/project/issues?id=Solierrr_database-console&issues=AaCSnt61nwuLUAdK3Ab4&open=AaCSnt61nwuLUAdK3Ab4&pullRequest=13
total_amount NUMERIC,
created_at TIMESTAMPTZ NOT NULL DEFAULT now(),
updated_at TIMESTAMPTZ,
Expand Down
10 changes: 9 additions & 1 deletion db/core/seed.sql
Original file line number Diff line number Diff line change
Expand Up @@ -62,10 +62,18 @@ VALUES (
);

-- Empresa solicitante, com uma unidade de instalacao.
INSERT INTO company (id, status, cnpj, trade_name, corporate_name)
INSERT INTO address (id, state, city, zip_code, street, number)
VALUES ('99999999-1111-1111-1111-111111111111', 'SP', 'Campinas', '13010000', 'Rua das Flores', '250');

INSERT INTO business_contact (id, company_email, phone)
VALUES ('88888888-1111-1111-1111-111111111111', 'contato@requester-demo.dev', '11999991111');

INSERT INTO company (id, status, fk_address, fk_business_contact, cnpj, trade_name, corporate_name)
VALUES (
'bbbbbbbb-1111-1111-1111-111111111111',
'APPROVED',
'99999999-1111-1111-1111-111111111111',
'88888888-1111-1111-1111-111111111111',
'11111111000191',
'Requester Demo',
'Requester Demo Energia Ltda'
Expand Down
Loading