feat: suporte a endereço completo no cadastro de profissionais e correção do fluxo de registro

This commit is contained in:
NANDO9322 2026-02-09 13:05:54 -03:00
parent 44b73a080d
commit cd33c63d9d
8 changed files with 183 additions and 14 deletions

View file

@ -321,7 +321,7 @@ func (q *Queries) GetAgendaByFotDataTipo(ctx context.Context, arg GetAgendaByFot
} }
const getAgendaProfessionals = `-- name: GetAgendaProfessionals :many const getAgendaProfessionals = `-- name: GetAgendaProfessionals :many
SELECT p.id, p.usuario_id, p.nome, p.funcao_profissional_id, p.endereco, p.cidade, p.uf, p.whatsapp, p.cpf_cnpj_titular, p.banco, p.agencia, p.conta, p.conta_pix, p.carro_disponivel, p.tem_estudio, p.qtd_estudio, p.tipo_cartao, p.observacao, p.qual_tec, p.educacao_simpatia, p.desempenho_evento, p.disp_horario, p.media, p.tabela_free, p.extra_por_equipamento, p.equipamentos, p.email, p.avatar_url, p.criado_em, p.atualizado_em, p.regiao, f.nome as funcao_nome, u.email SELECT p.id, p.usuario_id, p.nome, p.funcao_profissional_id, p.endereco, p.cidade, p.uf, p.whatsapp, p.cep, p.numero, p.complemento, p.bairro, p.cpf_cnpj_titular, p.banco, p.agencia, p.conta, p.conta_pix, p.carro_disponivel, p.tem_estudio, p.qtd_estudio, p.tipo_cartao, p.observacao, p.qual_tec, p.educacao_simpatia, p.desempenho_evento, p.disp_horario, p.media, p.tabela_free, p.extra_por_equipamento, p.equipamentos, p.email, p.avatar_url, p.criado_em, p.atualizado_em, p.regiao, f.nome as funcao_nome, u.email
FROM cadastro_profissionais p FROM cadastro_profissionais p
JOIN agenda_profissionais ap ON p.id = ap.profissional_id JOIN agenda_profissionais ap ON p.id = ap.profissional_id
LEFT JOIN funcoes_profissionais f ON p.funcao_profissional_id = f.id LEFT JOIN funcoes_profissionais f ON p.funcao_profissional_id = f.id
@ -338,6 +338,10 @@ type GetAgendaProfessionalsRow struct {
Cidade pgtype.Text `json:"cidade"` Cidade pgtype.Text `json:"cidade"`
Uf pgtype.Text `json:"uf"` Uf pgtype.Text `json:"uf"`
Whatsapp pgtype.Text `json:"whatsapp"` Whatsapp pgtype.Text `json:"whatsapp"`
Cep pgtype.Text `json:"cep"`
Numero pgtype.Text `json:"numero"`
Complemento pgtype.Text `json:"complemento"`
Bairro pgtype.Text `json:"bairro"`
CpfCnpjTitular pgtype.Text `json:"cpf_cnpj_titular"` CpfCnpjTitular pgtype.Text `json:"cpf_cnpj_titular"`
Banco pgtype.Text `json:"banco"` Banco pgtype.Text `json:"banco"`
Agencia pgtype.Text `json:"agencia"` Agencia pgtype.Text `json:"agencia"`
@ -383,6 +387,10 @@ func (q *Queries) GetAgendaProfessionals(ctx context.Context, agendaID pgtype.UU
&i.Cidade, &i.Cidade,
&i.Uf, &i.Uf,
&i.Whatsapp, &i.Whatsapp,
&i.Cep,
&i.Numero,
&i.Complemento,
&i.Bairro,
&i.CpfCnpjTitular, &i.CpfCnpjTitular,
&i.Banco, &i.Banco,
&i.Agencia, &i.Agencia,
@ -942,7 +950,7 @@ func (q *Queries) ListAgendasByUser(ctx context.Context, arg ListAgendasByUserPa
const listAvailableProfessionalsForDate = `-- name: ListAvailableProfessionalsForDate :many const listAvailableProfessionalsForDate = `-- name: ListAvailableProfessionalsForDate :many
SELECT SELECT
p.id, p.usuario_id, p.nome, p.funcao_profissional_id, p.endereco, p.cidade, p.uf, p.whatsapp, p.cpf_cnpj_titular, p.banco, p.agencia, p.conta, p.conta_pix, p.carro_disponivel, p.tem_estudio, p.qtd_estudio, p.tipo_cartao, p.observacao, p.qual_tec, p.educacao_simpatia, p.desempenho_evento, p.disp_horario, p.media, p.tabela_free, p.extra_por_equipamento, p.equipamentos, p.email, p.avatar_url, p.criado_em, p.atualizado_em, p.regiao, p.id, p.usuario_id, p.nome, p.funcao_profissional_id, p.endereco, p.cidade, p.uf, p.whatsapp, p.cep, p.numero, p.complemento, p.bairro, p.cpf_cnpj_titular, p.banco, p.agencia, p.conta, p.conta_pix, p.carro_disponivel, p.tem_estudio, p.qtd_estudio, p.tipo_cartao, p.observacao, p.qual_tec, p.educacao_simpatia, p.desempenho_evento, p.disp_horario, p.media, p.tabela_free, p.extra_por_equipamento, p.equipamentos, p.email, p.avatar_url, p.criado_em, p.atualizado_em, p.regiao,
u.email, u.email,
f.nome as funcao_nome, f.nome as funcao_nome,
dp.status as status_disponibilidade dp.status as status_disponibilidade
@ -977,6 +985,10 @@ type ListAvailableProfessionalsForDateRow struct {
Cidade pgtype.Text `json:"cidade"` Cidade pgtype.Text `json:"cidade"`
Uf pgtype.Text `json:"uf"` Uf pgtype.Text `json:"uf"`
Whatsapp pgtype.Text `json:"whatsapp"` Whatsapp pgtype.Text `json:"whatsapp"`
Cep pgtype.Text `json:"cep"`
Numero pgtype.Text `json:"numero"`
Complemento pgtype.Text `json:"complemento"`
Bairro pgtype.Text `json:"bairro"`
CpfCnpjTitular pgtype.Text `json:"cpf_cnpj_titular"` CpfCnpjTitular pgtype.Text `json:"cpf_cnpj_titular"`
Banco pgtype.Text `json:"banco"` Banco pgtype.Text `json:"banco"`
Agencia pgtype.Text `json:"agencia"` Agencia pgtype.Text `json:"agencia"`
@ -1023,6 +1035,10 @@ func (q *Queries) ListAvailableProfessionalsForDate(ctx context.Context, arg Lis
&i.Cidade, &i.Cidade,
&i.Uf, &i.Uf,
&i.Whatsapp, &i.Whatsapp,
&i.Cep,
&i.Numero,
&i.Complemento,
&i.Bairro,
&i.CpfCnpjTitular, &i.CpfCnpjTitular,
&i.Banco, &i.Banco,
&i.Agencia, &i.Agencia,

View file

@ -115,6 +115,10 @@ type CadastroProfissionai struct {
Cidade pgtype.Text `json:"cidade"` Cidade pgtype.Text `json:"cidade"`
Uf pgtype.Text `json:"uf"` Uf pgtype.Text `json:"uf"`
Whatsapp pgtype.Text `json:"whatsapp"` Whatsapp pgtype.Text `json:"whatsapp"`
Cep pgtype.Text `json:"cep"`
Numero pgtype.Text `json:"numero"`
Complemento pgtype.Text `json:"complemento"`
Bairro pgtype.Text `json:"bairro"`
CpfCnpjTitular pgtype.Text `json:"cpf_cnpj_titular"` CpfCnpjTitular pgtype.Text `json:"cpf_cnpj_titular"`
Banco pgtype.Text `json:"banco"` Banco pgtype.Text `json:"banco"`
Agencia pgtype.Text `json:"agencia"` Agencia pgtype.Text `json:"agencia"`

View file

@ -39,18 +39,28 @@ func (q *Queries) ClearProfessionalFunctions(ctx context.Context, profissionalID
const createProfissional = `-- name: CreateProfissional :one const createProfissional = `-- name: CreateProfissional :one
INSERT INTO cadastro_profissionais ( INSERT INTO cadastro_profissionais (
usuario_id, nome, funcao_profissional_id, endereco, cidade, uf, whatsapp, usuario_id, nome, funcao_profissional_id, endereco, cidade, uf, whatsapp,
cep, numero, complemento, bairro,
cpf_cnpj_titular, banco, agencia, conta_pix, conta, carro_disponivel, cpf_cnpj_titular, banco, agencia, conta_pix, conta, carro_disponivel,
tem_estudio, qtd_estudio, tipo_cartao, observacao, qual_tec, tem_estudio, qtd_estudio, tipo_cartao, observacao, qual_tec,
educacao_simpatia, desempenho_evento, disp_horario, media, educacao_simpatia, desempenho_evento, disp_horario, media,
tabela_free, extra_por_equipamento, equipamentos, email, avatar_url, regiao tabela_free, extra_por_equipamento, equipamentos, email, avatar_url, regiao
) VALUES ( ) VALUES (
$1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12, $13, $14, $15, $1, $2, $3, $4, $5, $6, $7,
$16, $17, $18, $19, $20, $21, $22, $23, $24, $25, $26, $27, $28 $28, $29, $30, $31,
$8, $9, $10, $11, $12, $13, $14, $15,
$16, $17, $18, $19, $20, $21, $22, $23, $24, $25, $26, $27, $32
) )
ON CONFLICT (email) DO UPDATE SET ON CONFLICT (email) DO UPDATE SET
nome = EXCLUDED.nome, nome = EXCLUDED.nome,
funcao_profissional_id = EXCLUDED.funcao_profissional_id, funcao_profissional_id = EXCLUDED.funcao_profissional_id,
whatsapp = EXCLUDED.whatsapp, whatsapp = EXCLUDED.whatsapp,
endereco = EXCLUDED.endereco,
cidade = EXCLUDED.cidade,
uf = EXCLUDED.uf,
cep = EXCLUDED.cep,
numero = EXCLUDED.numero,
complemento = EXCLUDED.complemento,
bairro = EXCLUDED.bairro,
cpf_cnpj_titular = EXCLUDED.cpf_cnpj_titular, cpf_cnpj_titular = EXCLUDED.cpf_cnpj_titular,
banco = EXCLUDED.banco, banco = EXCLUDED.banco,
agencia = EXCLUDED.agencia, agencia = EXCLUDED.agencia,
@ -72,7 +82,7 @@ ON CONFLICT (email) DO UPDATE SET
avatar_url = EXCLUDED.avatar_url, avatar_url = EXCLUDED.avatar_url,
regiao = EXCLUDED.regiao, regiao = EXCLUDED.regiao,
atualizado_em = NOW() atualizado_em = NOW()
RETURNING id, usuario_id, nome, funcao_profissional_id, endereco, cidade, uf, whatsapp, cpf_cnpj_titular, banco, agencia, conta, conta_pix, carro_disponivel, tem_estudio, qtd_estudio, tipo_cartao, observacao, qual_tec, educacao_simpatia, desempenho_evento, disp_horario, media, tabela_free, extra_por_equipamento, equipamentos, email, avatar_url, criado_em, atualizado_em, regiao RETURNING id, usuario_id, nome, funcao_profissional_id, endereco, cidade, uf, whatsapp, cep, numero, complemento, bairro, cpf_cnpj_titular, banco, agencia, conta, conta_pix, carro_disponivel, tem_estudio, qtd_estudio, tipo_cartao, observacao, qual_tec, educacao_simpatia, desempenho_evento, disp_horario, media, tabela_free, extra_por_equipamento, equipamentos, email, avatar_url, criado_em, atualizado_em, regiao
` `
type CreateProfissionalParams struct { type CreateProfissionalParams struct {
@ -103,6 +113,10 @@ type CreateProfissionalParams struct {
Equipamentos pgtype.Text `json:"equipamentos"` Equipamentos pgtype.Text `json:"equipamentos"`
Email pgtype.Text `json:"email"` Email pgtype.Text `json:"email"`
AvatarUrl pgtype.Text `json:"avatar_url"` AvatarUrl pgtype.Text `json:"avatar_url"`
Cep pgtype.Text `json:"cep"`
Numero pgtype.Text `json:"numero"`
Complemento pgtype.Text `json:"complemento"`
Bairro pgtype.Text `json:"bairro"`
Regiao pgtype.Text `json:"regiao"` Regiao pgtype.Text `json:"regiao"`
} }
@ -135,6 +149,10 @@ func (q *Queries) CreateProfissional(ctx context.Context, arg CreateProfissional
arg.Equipamentos, arg.Equipamentos,
arg.Email, arg.Email,
arg.AvatarUrl, arg.AvatarUrl,
arg.Cep,
arg.Numero,
arg.Complemento,
arg.Bairro,
arg.Regiao, arg.Regiao,
) )
var i CadastroProfissionai var i CadastroProfissionai
@ -147,6 +165,10 @@ func (q *Queries) CreateProfissional(ctx context.Context, arg CreateProfissional
&i.Cidade, &i.Cidade,
&i.Uf, &i.Uf,
&i.Whatsapp, &i.Whatsapp,
&i.Cep,
&i.Numero,
&i.Complemento,
&i.Bairro,
&i.CpfCnpjTitular, &i.CpfCnpjTitular,
&i.Banco, &i.Banco,
&i.Agencia, &i.Agencia,
@ -199,7 +221,7 @@ func (q *Queries) DeleteProfissional(ctx context.Context, arg DeleteProfissional
} }
const getProfissionalByCPF = `-- name: GetProfissionalByCPF :one const getProfissionalByCPF = `-- name: GetProfissionalByCPF :one
SELECT p.id, p.usuario_id, p.nome, p.funcao_profissional_id, p.endereco, p.cidade, p.uf, p.whatsapp, p.cpf_cnpj_titular, p.banco, p.agencia, p.conta, p.conta_pix, p.carro_disponivel, p.tem_estudio, p.qtd_estudio, p.tipo_cartao, p.observacao, p.qual_tec, p.educacao_simpatia, p.desempenho_evento, p.disp_horario, p.media, p.tabela_free, p.extra_por_equipamento, p.equipamentos, p.email, p.avatar_url, p.criado_em, p.atualizado_em, p.regiao, SELECT p.id, p.usuario_id, p.nome, p.funcao_profissional_id, p.endereco, p.cidade, p.uf, p.whatsapp, p.cep, p.numero, p.complemento, p.bairro, p.cpf_cnpj_titular, p.banco, p.agencia, p.conta, p.conta_pix, p.carro_disponivel, p.tem_estudio, p.qtd_estudio, p.tipo_cartao, p.observacao, p.qual_tec, p.educacao_simpatia, p.desempenho_evento, p.disp_horario, p.media, p.tabela_free, p.extra_por_equipamento, p.equipamentos, p.email, p.avatar_url, p.criado_em, p.atualizado_em, p.regiao,
COALESCE( COALESCE(
(SELECT json_agg(json_build_object('id', f.id, 'nome', f.nome)) (SELECT json_agg(json_build_object('id', f.id, 'nome', f.nome))
FROM profissionais_funcoes_junction pfj FROM profissionais_funcoes_junction pfj
@ -225,6 +247,10 @@ type GetProfissionalByCPFRow struct {
Cidade pgtype.Text `json:"cidade"` Cidade pgtype.Text `json:"cidade"`
Uf pgtype.Text `json:"uf"` Uf pgtype.Text `json:"uf"`
Whatsapp pgtype.Text `json:"whatsapp"` Whatsapp pgtype.Text `json:"whatsapp"`
Cep pgtype.Text `json:"cep"`
Numero pgtype.Text `json:"numero"`
Complemento pgtype.Text `json:"complemento"`
Bairro pgtype.Text `json:"bairro"`
CpfCnpjTitular pgtype.Text `json:"cpf_cnpj_titular"` CpfCnpjTitular pgtype.Text `json:"cpf_cnpj_titular"`
Banco pgtype.Text `json:"banco"` Banco pgtype.Text `json:"banco"`
Agencia pgtype.Text `json:"agencia"` Agencia pgtype.Text `json:"agencia"`
@ -263,6 +289,10 @@ func (q *Queries) GetProfissionalByCPF(ctx context.Context, arg GetProfissionalB
&i.Cidade, &i.Cidade,
&i.Uf, &i.Uf,
&i.Whatsapp, &i.Whatsapp,
&i.Cep,
&i.Numero,
&i.Complemento,
&i.Bairro,
&i.CpfCnpjTitular, &i.CpfCnpjTitular,
&i.Banco, &i.Banco,
&i.Agencia, &i.Agencia,
@ -292,7 +322,7 @@ func (q *Queries) GetProfissionalByCPF(ctx context.Context, arg GetProfissionalB
} }
const getProfissionalByID = `-- name: GetProfissionalByID :one const getProfissionalByID = `-- name: GetProfissionalByID :one
SELECT p.id, p.usuario_id, p.nome, p.funcao_profissional_id, p.endereco, p.cidade, p.uf, p.whatsapp, p.cpf_cnpj_titular, p.banco, p.agencia, p.conta, p.conta_pix, p.carro_disponivel, p.tem_estudio, p.qtd_estudio, p.tipo_cartao, p.observacao, p.qual_tec, p.educacao_simpatia, p.desempenho_evento, p.disp_horario, p.media, p.tabela_free, p.extra_por_equipamento, p.equipamentos, p.email, p.avatar_url, p.criado_em, p.atualizado_em, p.regiao, SELECT p.id, p.usuario_id, p.nome, p.funcao_profissional_id, p.endereco, p.cidade, p.uf, p.whatsapp, p.cep, p.numero, p.complemento, p.bairro, p.cpf_cnpj_titular, p.banco, p.agencia, p.conta, p.conta_pix, p.carro_disponivel, p.tem_estudio, p.qtd_estudio, p.tipo_cartao, p.observacao, p.qual_tec, p.educacao_simpatia, p.desempenho_evento, p.disp_horario, p.media, p.tabela_free, p.extra_por_equipamento, p.equipamentos, p.email, p.avatar_url, p.criado_em, p.atualizado_em, p.regiao,
COALESCE( COALESCE(
(SELECT json_agg(json_build_object('id', f.id, 'nome', f.nome)) (SELECT json_agg(json_build_object('id', f.id, 'nome', f.nome))
FROM profissionais_funcoes_junction pfj FROM profissionais_funcoes_junction pfj
@ -318,6 +348,10 @@ type GetProfissionalByIDRow struct {
Cidade pgtype.Text `json:"cidade"` Cidade pgtype.Text `json:"cidade"`
Uf pgtype.Text `json:"uf"` Uf pgtype.Text `json:"uf"`
Whatsapp pgtype.Text `json:"whatsapp"` Whatsapp pgtype.Text `json:"whatsapp"`
Cep pgtype.Text `json:"cep"`
Numero pgtype.Text `json:"numero"`
Complemento pgtype.Text `json:"complemento"`
Bairro pgtype.Text `json:"bairro"`
CpfCnpjTitular pgtype.Text `json:"cpf_cnpj_titular"` CpfCnpjTitular pgtype.Text `json:"cpf_cnpj_titular"`
Banco pgtype.Text `json:"banco"` Banco pgtype.Text `json:"banco"`
Agencia pgtype.Text `json:"agencia"` Agencia pgtype.Text `json:"agencia"`
@ -356,6 +390,10 @@ func (q *Queries) GetProfissionalByID(ctx context.Context, arg GetProfissionalBy
&i.Cidade, &i.Cidade,
&i.Uf, &i.Uf,
&i.Whatsapp, &i.Whatsapp,
&i.Cep,
&i.Numero,
&i.Complemento,
&i.Bairro,
&i.CpfCnpjTitular, &i.CpfCnpjTitular,
&i.Banco, &i.Banco,
&i.Agencia, &i.Agencia,
@ -385,7 +423,7 @@ func (q *Queries) GetProfissionalByID(ctx context.Context, arg GetProfissionalBy
} }
const getProfissionalByUsuarioID = `-- name: GetProfissionalByUsuarioID :one const getProfissionalByUsuarioID = `-- name: GetProfissionalByUsuarioID :one
SELECT p.id, p.usuario_id, p.nome, p.funcao_profissional_id, p.endereco, p.cidade, p.uf, p.whatsapp, p.cpf_cnpj_titular, p.banco, p.agencia, p.conta, p.conta_pix, p.carro_disponivel, p.tem_estudio, p.qtd_estudio, p.tipo_cartao, p.observacao, p.qual_tec, p.educacao_simpatia, p.desempenho_evento, p.disp_horario, p.media, p.tabela_free, p.extra_por_equipamento, p.equipamentos, p.email, p.avatar_url, p.criado_em, p.atualizado_em, p.regiao, u.email as usuario_email, SELECT p.id, p.usuario_id, p.nome, p.funcao_profissional_id, p.endereco, p.cidade, p.uf, p.whatsapp, p.cep, p.numero, p.complemento, p.bairro, p.cpf_cnpj_titular, p.banco, p.agencia, p.conta, p.conta_pix, p.carro_disponivel, p.tem_estudio, p.qtd_estudio, p.tipo_cartao, p.observacao, p.qual_tec, p.educacao_simpatia, p.desempenho_evento, p.disp_horario, p.media, p.tabela_free, p.extra_por_equipamento, p.equipamentos, p.email, p.avatar_url, p.criado_em, p.atualizado_em, p.regiao, u.email as usuario_email,
COALESCE( COALESCE(
(SELECT json_agg(json_build_object('id', f.id, 'nome', f.nome)) (SELECT json_agg(json_build_object('id', f.id, 'nome', f.nome))
FROM profissionais_funcoes_junction pfj FROM profissionais_funcoes_junction pfj
@ -407,6 +445,10 @@ type GetProfissionalByUsuarioIDRow struct {
Cidade pgtype.Text `json:"cidade"` Cidade pgtype.Text `json:"cidade"`
Uf pgtype.Text `json:"uf"` Uf pgtype.Text `json:"uf"`
Whatsapp pgtype.Text `json:"whatsapp"` Whatsapp pgtype.Text `json:"whatsapp"`
Cep pgtype.Text `json:"cep"`
Numero pgtype.Text `json:"numero"`
Complemento pgtype.Text `json:"complemento"`
Bairro pgtype.Text `json:"bairro"`
CpfCnpjTitular pgtype.Text `json:"cpf_cnpj_titular"` CpfCnpjTitular pgtype.Text `json:"cpf_cnpj_titular"`
Banco pgtype.Text `json:"banco"` Banco pgtype.Text `json:"banco"`
Agencia pgtype.Text `json:"agencia"` Agencia pgtype.Text `json:"agencia"`
@ -446,6 +488,10 @@ func (q *Queries) GetProfissionalByUsuarioID(ctx context.Context, usuarioID pgty
&i.Cidade, &i.Cidade,
&i.Uf, &i.Uf,
&i.Whatsapp, &i.Whatsapp,
&i.Cep,
&i.Numero,
&i.Complemento,
&i.Bairro,
&i.CpfCnpjTitular, &i.CpfCnpjTitular,
&i.Banco, &i.Banco,
&i.Agencia, &i.Agencia,
@ -507,7 +553,7 @@ func (q *Queries) LinkUserToProfessional(ctx context.Context, arg LinkUserToProf
} }
const listProfissionais = `-- name: ListProfissionais :many const listProfissionais = `-- name: ListProfissionais :many
SELECT p.id, p.usuario_id, p.nome, p.funcao_profissional_id, p.endereco, p.cidade, p.uf, p.whatsapp, p.cpf_cnpj_titular, p.banco, p.agencia, p.conta, p.conta_pix, p.carro_disponivel, p.tem_estudio, p.qtd_estudio, p.tipo_cartao, p.observacao, p.qual_tec, p.educacao_simpatia, p.desempenho_evento, p.disp_horario, p.media, p.tabela_free, p.extra_por_equipamento, p.equipamentos, p.email, p.avatar_url, p.criado_em, p.atualizado_em, p.regiao, u.email as usuario_email, SELECT p.id, p.usuario_id, p.nome, p.funcao_profissional_id, p.endereco, p.cidade, p.uf, p.whatsapp, p.cep, p.numero, p.complemento, p.bairro, p.cpf_cnpj_titular, p.banco, p.agencia, p.conta, p.conta_pix, p.carro_disponivel, p.tem_estudio, p.qtd_estudio, p.tipo_cartao, p.observacao, p.qual_tec, p.educacao_simpatia, p.desempenho_evento, p.disp_horario, p.media, p.tabela_free, p.extra_por_equipamento, p.equipamentos, p.email, p.avatar_url, p.criado_em, p.atualizado_em, p.regiao, u.email as usuario_email,
COALESCE( COALESCE(
(SELECT json_agg(json_build_object('id', f.id, 'nome', f.nome)) (SELECT json_agg(json_build_object('id', f.id, 'nome', f.nome))
FROM profissionais_funcoes_junction pfj FROM profissionais_funcoes_junction pfj
@ -530,6 +576,10 @@ type ListProfissionaisRow struct {
Cidade pgtype.Text `json:"cidade"` Cidade pgtype.Text `json:"cidade"`
Uf pgtype.Text `json:"uf"` Uf pgtype.Text `json:"uf"`
Whatsapp pgtype.Text `json:"whatsapp"` Whatsapp pgtype.Text `json:"whatsapp"`
Cep pgtype.Text `json:"cep"`
Numero pgtype.Text `json:"numero"`
Complemento pgtype.Text `json:"complemento"`
Bairro pgtype.Text `json:"bairro"`
CpfCnpjTitular pgtype.Text `json:"cpf_cnpj_titular"` CpfCnpjTitular pgtype.Text `json:"cpf_cnpj_titular"`
Banco pgtype.Text `json:"banco"` Banco pgtype.Text `json:"banco"`
Agencia pgtype.Text `json:"agencia"` Agencia pgtype.Text `json:"agencia"`
@ -575,6 +625,10 @@ func (q *Queries) ListProfissionais(ctx context.Context, regiao pgtype.Text) ([]
&i.Cidade, &i.Cidade,
&i.Uf, &i.Uf,
&i.Whatsapp, &i.Whatsapp,
&i.Cep,
&i.Numero,
&i.Complemento,
&i.Bairro,
&i.CpfCnpjTitular, &i.CpfCnpjTitular,
&i.Banco, &i.Banco,
&i.Agencia, &i.Agencia,
@ -612,7 +666,7 @@ func (q *Queries) ListProfissionais(ctx context.Context, regiao pgtype.Text) ([]
} }
const searchProfissionais = `-- name: SearchProfissionais :many const searchProfissionais = `-- name: SearchProfissionais :many
SELECT p.id, p.usuario_id, p.nome, p.funcao_profissional_id, p.endereco, p.cidade, p.uf, p.whatsapp, p.cpf_cnpj_titular, p.banco, p.agencia, p.conta, p.conta_pix, p.carro_disponivel, p.tem_estudio, p.qtd_estudio, p.tipo_cartao, p.observacao, p.qual_tec, p.educacao_simpatia, p.desempenho_evento, p.disp_horario, p.media, p.tabela_free, p.extra_por_equipamento, p.equipamentos, p.email, p.avatar_url, p.criado_em, p.atualizado_em, p.regiao, SELECT p.id, p.usuario_id, p.nome, p.funcao_profissional_id, p.endereco, p.cidade, p.uf, p.whatsapp, p.cep, p.numero, p.complemento, p.bairro, p.cpf_cnpj_titular, p.banco, p.agencia, p.conta, p.conta_pix, p.carro_disponivel, p.tem_estudio, p.qtd_estudio, p.tipo_cartao, p.observacao, p.qual_tec, p.educacao_simpatia, p.desempenho_evento, p.disp_horario, p.media, p.tabela_free, p.extra_por_equipamento, p.equipamentos, p.email, p.avatar_url, p.criado_em, p.atualizado_em, p.regiao,
COALESCE( COALESCE(
(SELECT json_agg(json_build_object('id', f.id, 'nome', f.nome)) (SELECT json_agg(json_build_object('id', f.id, 'nome', f.nome))
FROM profissionais_funcoes_junction pfj FROM profissionais_funcoes_junction pfj
@ -640,6 +694,10 @@ type SearchProfissionaisRow struct {
Cidade pgtype.Text `json:"cidade"` Cidade pgtype.Text `json:"cidade"`
Uf pgtype.Text `json:"uf"` Uf pgtype.Text `json:"uf"`
Whatsapp pgtype.Text `json:"whatsapp"` Whatsapp pgtype.Text `json:"whatsapp"`
Cep pgtype.Text `json:"cep"`
Numero pgtype.Text `json:"numero"`
Complemento pgtype.Text `json:"complemento"`
Bairro pgtype.Text `json:"bairro"`
CpfCnpjTitular pgtype.Text `json:"cpf_cnpj_titular"` CpfCnpjTitular pgtype.Text `json:"cpf_cnpj_titular"`
Banco pgtype.Text `json:"banco"` Banco pgtype.Text `json:"banco"`
Agencia pgtype.Text `json:"agencia"` Agencia pgtype.Text `json:"agencia"`
@ -684,6 +742,10 @@ func (q *Queries) SearchProfissionais(ctx context.Context, arg SearchProfissiona
&i.Cidade, &i.Cidade,
&i.Uf, &i.Uf,
&i.Whatsapp, &i.Whatsapp,
&i.Cep,
&i.Numero,
&i.Complemento,
&i.Bairro,
&i.CpfCnpjTitular, &i.CpfCnpjTitular,
&i.Banco, &i.Banco,
&i.Agencia, &i.Agencia,
@ -720,7 +782,7 @@ func (q *Queries) SearchProfissionais(ctx context.Context, arg SearchProfissiona
} }
const searchProfissionaisByFunction = `-- name: SearchProfissionaisByFunction :many const searchProfissionaisByFunction = `-- name: SearchProfissionaisByFunction :many
SELECT p.id, p.usuario_id, p.nome, p.funcao_profissional_id, p.endereco, p.cidade, p.uf, p.whatsapp, p.cpf_cnpj_titular, p.banco, p.agencia, p.conta, p.conta_pix, p.carro_disponivel, p.tem_estudio, p.qtd_estudio, p.tipo_cartao, p.observacao, p.qual_tec, p.educacao_simpatia, p.desempenho_evento, p.disp_horario, p.media, p.tabela_free, p.extra_por_equipamento, p.equipamentos, p.email, p.avatar_url, p.criado_em, p.atualizado_em, p.regiao, SELECT p.id, p.usuario_id, p.nome, p.funcao_profissional_id, p.endereco, p.cidade, p.uf, p.whatsapp, p.cep, p.numero, p.complemento, p.bairro, p.cpf_cnpj_titular, p.banco, p.agencia, p.conta, p.conta_pix, p.carro_disponivel, p.tem_estudio, p.qtd_estudio, p.tipo_cartao, p.observacao, p.qual_tec, p.educacao_simpatia, p.desempenho_evento, p.disp_horario, p.media, p.tabela_free, p.extra_por_equipamento, p.equipamentos, p.email, p.avatar_url, p.criado_em, p.atualizado_em, p.regiao,
COALESCE( COALESCE(
(SELECT json_agg(json_build_object('id', f2.id, 'nome', f2.nome)) (SELECT json_agg(json_build_object('id', f2.id, 'nome', f2.nome))
FROM profissionais_funcoes_junction pfj2 FROM profissionais_funcoes_junction pfj2
@ -759,6 +821,10 @@ type SearchProfissionaisByFunctionRow struct {
Cidade pgtype.Text `json:"cidade"` Cidade pgtype.Text `json:"cidade"`
Uf pgtype.Text `json:"uf"` Uf pgtype.Text `json:"uf"`
Whatsapp pgtype.Text `json:"whatsapp"` Whatsapp pgtype.Text `json:"whatsapp"`
Cep pgtype.Text `json:"cep"`
Numero pgtype.Text `json:"numero"`
Complemento pgtype.Text `json:"complemento"`
Bairro pgtype.Text `json:"bairro"`
CpfCnpjTitular pgtype.Text `json:"cpf_cnpj_titular"` CpfCnpjTitular pgtype.Text `json:"cpf_cnpj_titular"`
Banco pgtype.Text `json:"banco"` Banco pgtype.Text `json:"banco"`
Agencia pgtype.Text `json:"agencia"` Agencia pgtype.Text `json:"agencia"`
@ -803,6 +869,10 @@ func (q *Queries) SearchProfissionaisByFunction(ctx context.Context, arg SearchP
&i.Cidade, &i.Cidade,
&i.Uf, &i.Uf,
&i.Whatsapp, &i.Whatsapp,
&i.Cep,
&i.Numero,
&i.Complemento,
&i.Bairro,
&i.CpfCnpjTitular, &i.CpfCnpjTitular,
&i.Banco, &i.Banco,
&i.Agencia, &i.Agencia,
@ -847,6 +917,10 @@ SET
cidade = $5, cidade = $5,
uf = $6, uf = $6,
whatsapp = $7, whatsapp = $7,
cep = $28,
numero = $29,
complemento = $30,
bairro = $31,
cpf_cnpj_titular = $8, cpf_cnpj_titular = $8,
banco = $9, banco = $9,
agencia = $10, agencia = $10,
@ -868,8 +942,8 @@ SET
avatar_url = $26, avatar_url = $26,
email = $27, email = $27,
atualizado_em = NOW() atualizado_em = NOW()
WHERE id = $1 AND regiao = $28 WHERE id = $1 AND regiao = $32
RETURNING id, usuario_id, nome, funcao_profissional_id, endereco, cidade, uf, whatsapp, cpf_cnpj_titular, banco, agencia, conta, conta_pix, carro_disponivel, tem_estudio, qtd_estudio, tipo_cartao, observacao, qual_tec, educacao_simpatia, desempenho_evento, disp_horario, media, tabela_free, extra_por_equipamento, equipamentos, email, avatar_url, criado_em, atualizado_em, regiao RETURNING id, usuario_id, nome, funcao_profissional_id, endereco, cidade, uf, whatsapp, cep, numero, complemento, bairro, cpf_cnpj_titular, banco, agencia, conta, conta_pix, carro_disponivel, tem_estudio, qtd_estudio, tipo_cartao, observacao, qual_tec, educacao_simpatia, desempenho_evento, disp_horario, media, tabela_free, extra_por_equipamento, equipamentos, email, avatar_url, criado_em, atualizado_em, regiao
` `
type UpdateProfissionalParams struct { type UpdateProfissionalParams struct {
@ -900,6 +974,10 @@ type UpdateProfissionalParams struct {
Equipamentos pgtype.Text `json:"equipamentos"` Equipamentos pgtype.Text `json:"equipamentos"`
AvatarUrl pgtype.Text `json:"avatar_url"` AvatarUrl pgtype.Text `json:"avatar_url"`
Email pgtype.Text `json:"email"` Email pgtype.Text `json:"email"`
Cep pgtype.Text `json:"cep"`
Numero pgtype.Text `json:"numero"`
Complemento pgtype.Text `json:"complemento"`
Bairro pgtype.Text `json:"bairro"`
Regiao pgtype.Text `json:"regiao"` Regiao pgtype.Text `json:"regiao"`
} }
@ -932,6 +1010,10 @@ func (q *Queries) UpdateProfissional(ctx context.Context, arg UpdateProfissional
arg.Equipamentos, arg.Equipamentos,
arg.AvatarUrl, arg.AvatarUrl,
arg.Email, arg.Email,
arg.Cep,
arg.Numero,
arg.Complemento,
arg.Bairro,
arg.Regiao, arg.Regiao,
) )
var i CadastroProfissionai var i CadastroProfissionai
@ -944,6 +1026,10 @@ func (q *Queries) UpdateProfissional(ctx context.Context, arg UpdateProfissional
&i.Cidade, &i.Cidade,
&i.Uf, &i.Uf,
&i.Whatsapp, &i.Whatsapp,
&i.Cep,
&i.Numero,
&i.Complemento,
&i.Bairro,
&i.CpfCnpjTitular, &i.CpfCnpjTitular,
&i.Banco, &i.Banco,
&i.Agencia, &i.Agencia,

View file

@ -0,0 +1,5 @@
ALTER TABLE cadastro_profissionais
ADD COLUMN IF NOT EXISTS cep VARCHAR(10),
ADD COLUMN IF NOT EXISTS numero VARCHAR(20),
ADD COLUMN IF NOT EXISTS complemento VARCHAR(100),
ADD COLUMN IF NOT EXISTS bairro VARCHAR(100);

View file

@ -1,18 +1,28 @@
-- name: CreateProfissional :one -- name: CreateProfissional :one
INSERT INTO cadastro_profissionais ( INSERT INTO cadastro_profissionais (
usuario_id, nome, funcao_profissional_id, endereco, cidade, uf, whatsapp, usuario_id, nome, funcao_profissional_id, endereco, cidade, uf, whatsapp,
cep, numero, complemento, bairro,
cpf_cnpj_titular, banco, agencia, conta_pix, conta, carro_disponivel, cpf_cnpj_titular, banco, agencia, conta_pix, conta, carro_disponivel,
tem_estudio, qtd_estudio, tipo_cartao, observacao, qual_tec, tem_estudio, qtd_estudio, tipo_cartao, observacao, qual_tec,
educacao_simpatia, desempenho_evento, disp_horario, media, educacao_simpatia, desempenho_evento, disp_horario, media,
tabela_free, extra_por_equipamento, equipamentos, email, avatar_url, regiao tabela_free, extra_por_equipamento, equipamentos, email, avatar_url, regiao
) VALUES ( ) VALUES (
$1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12, $13, $14, $15, $1, $2, $3, $4, $5, $6, $7,
$28, $29, $30, $31,
$8, $9, $10, $11, $12, $13, $14, $15,
$16, $17, $18, $19, $20, $21, $22, $23, $24, $25, $26, $27, @regiao $16, $17, $18, $19, $20, $21, $22, $23, $24, $25, $26, $27, @regiao
) )
ON CONFLICT (email) DO UPDATE SET ON CONFLICT (email) DO UPDATE SET
nome = EXCLUDED.nome, nome = EXCLUDED.nome,
funcao_profissional_id = EXCLUDED.funcao_profissional_id, funcao_profissional_id = EXCLUDED.funcao_profissional_id,
whatsapp = EXCLUDED.whatsapp, whatsapp = EXCLUDED.whatsapp,
endereco = EXCLUDED.endereco,
cidade = EXCLUDED.cidade,
uf = EXCLUDED.uf,
cep = EXCLUDED.cep,
numero = EXCLUDED.numero,
complemento = EXCLUDED.complemento,
bairro = EXCLUDED.bairro,
cpf_cnpj_titular = EXCLUDED.cpf_cnpj_titular, cpf_cnpj_titular = EXCLUDED.cpf_cnpj_titular,
banco = EXCLUDED.banco, banco = EXCLUDED.banco,
agencia = EXCLUDED.agencia, agencia = EXCLUDED.agencia,
@ -84,6 +94,10 @@ SET
cidade = $5, cidade = $5,
uf = $6, uf = $6,
whatsapp = $7, whatsapp = $7,
cep = $28,
numero = $29,
complemento = $30,
bairro = $31,
cpf_cnpj_titular = $8, cpf_cnpj_titular = $8,
banco = $9, banco = $9,
agencia = $10, agencia = $10,

View file

@ -37,6 +37,10 @@ CREATE TABLE IF NOT EXISTS cadastro_profissionais (
cidade VARCHAR(100), cidade VARCHAR(100),
uf CHAR(2), uf CHAR(2),
whatsapp VARCHAR(20), whatsapp VARCHAR(20),
cep VARCHAR(10),
numero VARCHAR(20),
complemento VARCHAR(100),
bairro VARCHAR(100),
cpf_cnpj_titular VARCHAR(20) UNIQUE, cpf_cnpj_titular VARCHAR(20) UNIQUE,
banco VARCHAR(100), banco VARCHAR(100),
agencia VARCHAR(20), agencia VARCHAR(20),

View file

@ -30,6 +30,10 @@ type ProfissionalResponse struct {
Endereco *string `json:"endereco"` Endereco *string `json:"endereco"`
Cidade *string `json:"cidade"` Cidade *string `json:"cidade"`
Uf *string `json:"uf"` Uf *string `json:"uf"`
Cep *string `json:"cep"`
Numero *string `json:"numero"`
Complemento *string `json:"complemento"`
Bairro *string `json:"bairro"`
Whatsapp *string `json:"whatsapp"` Whatsapp *string `json:"whatsapp"`
CpfCnpjTitular *string `json:"cpf_cnpj_titular"` CpfCnpjTitular *string `json:"cpf_cnpj_titular"`
Banco *string `json:"banco"` Banco *string `json:"banco"`
@ -71,6 +75,10 @@ func toResponse(p interface{}) ProfissionalResponse {
Endereco: fromPgText(v.Endereco), Endereco: fromPgText(v.Endereco),
Cidade: fromPgText(v.Cidade), Cidade: fromPgText(v.Cidade),
Uf: fromPgText(v.Uf), Uf: fromPgText(v.Uf),
Cep: fromPgText(v.Cep),
Numero: fromPgText(v.Numero),
Complemento: fromPgText(v.Complemento),
Bairro: fromPgText(v.Bairro),
Whatsapp: fromPgText(v.Whatsapp), Whatsapp: fromPgText(v.Whatsapp),
CpfCnpjTitular: fromPgText(v.CpfCnpjTitular), CpfCnpjTitular: fromPgText(v.CpfCnpjTitular),
Banco: fromPgText(v.Banco), Banco: fromPgText(v.Banco),
@ -108,6 +116,10 @@ func toResponse(p interface{}) ProfissionalResponse {
Endereco: fromPgText(v.Endereco), Endereco: fromPgText(v.Endereco),
Cidade: fromPgText(v.Cidade), Cidade: fromPgText(v.Cidade),
Uf: fromPgText(v.Uf), Uf: fromPgText(v.Uf),
Cep: fromPgText(v.Cep),
Numero: fromPgText(v.Numero),
Complemento: fromPgText(v.Complemento),
Bairro: fromPgText(v.Bairro),
Whatsapp: fromPgText(v.Whatsapp), Whatsapp: fromPgText(v.Whatsapp),
CpfCnpjTitular: fromPgText(v.CpfCnpjTitular), CpfCnpjTitular: fromPgText(v.CpfCnpjTitular),
Banco: fromPgText(v.Banco), Banco: fromPgText(v.Banco),
@ -141,6 +153,10 @@ func toResponse(p interface{}) ProfissionalResponse {
Endereco: fromPgText(v.Endereco), Endereco: fromPgText(v.Endereco),
Cidade: fromPgText(v.Cidade), Cidade: fromPgText(v.Cidade),
Uf: fromPgText(v.Uf), Uf: fromPgText(v.Uf),
Cep: fromPgText(v.Cep),
Numero: fromPgText(v.Numero),
Complemento: fromPgText(v.Complemento),
Bairro: fromPgText(v.Bairro),
Whatsapp: fromPgText(v.Whatsapp), Whatsapp: fromPgText(v.Whatsapp),
CpfCnpjTitular: fromPgText(v.CpfCnpjTitular), CpfCnpjTitular: fromPgText(v.CpfCnpjTitular),
Banco: fromPgText(v.Banco), Banco: fromPgText(v.Banco),
@ -178,6 +194,10 @@ func toResponse(p interface{}) ProfissionalResponse {
Endereco: fromPgText(v.Endereco), Endereco: fromPgText(v.Endereco),
Cidade: fromPgText(v.Cidade), Cidade: fromPgText(v.Cidade),
Uf: fromPgText(v.Uf), Uf: fromPgText(v.Uf),
Cep: fromPgText(v.Cep),
Numero: fromPgText(v.Numero),
Complemento: fromPgText(v.Complemento),
Bairro: fromPgText(v.Bairro),
Whatsapp: fromPgText(v.Whatsapp), Whatsapp: fromPgText(v.Whatsapp),
CpfCnpjTitular: fromPgText(v.CpfCnpjTitular), CpfCnpjTitular: fromPgText(v.CpfCnpjTitular),
Banco: fromPgText(v.Banco), Banco: fromPgText(v.Banco),

View file

@ -27,6 +27,10 @@ type CreateProfissionalInput struct {
Endereco *string `json:"endereco"` Endereco *string `json:"endereco"`
Cidade *string `json:"cidade"` Cidade *string `json:"cidade"`
Uf *string `json:"uf"` Uf *string `json:"uf"`
Cep *string `json:"cep"`
Numero *string `json:"numero"`
Complemento *string `json:"complemento"`
Bairro *string `json:"bairro"`
Whatsapp *string `json:"whatsapp"` Whatsapp *string `json:"whatsapp"`
CpfCnpjTitular *string `json:"cpf_cnpj_titular"` CpfCnpjTitular *string `json:"cpf_cnpj_titular"`
Banco *string `json:"banco"` Banco *string `json:"banco"`
@ -127,6 +131,10 @@ func (s *Service) Create(ctx context.Context, userID string, input CreateProfiss
Endereco: mergeStr(input.Endereco, existing.Endereco), Endereco: mergeStr(input.Endereco, existing.Endereco),
Cidade: mergeStr(input.Cidade, existing.Cidade), Cidade: mergeStr(input.Cidade, existing.Cidade),
Uf: mergeStr(input.Uf, existing.Uf), Uf: mergeStr(input.Uf, existing.Uf),
Cep: mergeStr(input.Cep, existing.Cep),
Numero: mergeStr(input.Numero, existing.Numero),
Complemento: mergeStr(input.Complemento, existing.Complemento),
Bairro: mergeStr(input.Bairro, existing.Bairro),
Whatsapp: mergeStr(input.Whatsapp, existing.Whatsapp), Whatsapp: mergeStr(input.Whatsapp, existing.Whatsapp),
CpfCnpjTitular: mergeStr(input.CpfCnpjTitular, existing.CpfCnpjTitular), CpfCnpjTitular: mergeStr(input.CpfCnpjTitular, existing.CpfCnpjTitular),
Banco: mergeStr(input.Banco, existing.Banco), Banco: mergeStr(input.Banco, existing.Banco),
@ -197,6 +205,10 @@ func (s *Service) Create(ctx context.Context, userID string, input CreateProfiss
Endereco: toPgText(input.Endereco), Endereco: toPgText(input.Endereco),
Cidade: toPgText(input.Cidade), Cidade: toPgText(input.Cidade),
Uf: toPgText(input.Uf), Uf: toPgText(input.Uf),
Cep: toPgText(input.Cep),
Numero: toPgText(input.Numero),
Complemento: toPgText(input.Complemento),
Bairro: toPgText(input.Bairro),
Whatsapp: toPgText(input.Whatsapp), Whatsapp: toPgText(input.Whatsapp),
CpfCnpjTitular: toPgText(input.CpfCnpjTitular), CpfCnpjTitular: toPgText(input.CpfCnpjTitular),
Banco: toPgText(input.Banco), Banco: toPgText(input.Banco),
@ -275,6 +287,10 @@ type UpdateProfissionalInput struct {
Endereco *string `json:"endereco"` Endereco *string `json:"endereco"`
Cidade *string `json:"cidade"` Cidade *string `json:"cidade"`
Uf *string `json:"uf"` Uf *string `json:"uf"`
Cep *string `json:"cep"`
Numero *string `json:"numero"`
Complemento *string `json:"complemento"`
Bairro *string `json:"bairro"`
Whatsapp *string `json:"whatsapp"` Whatsapp *string `json:"whatsapp"`
CpfCnpjTitular *string `json:"cpf_cnpj_titular"` CpfCnpjTitular *string `json:"cpf_cnpj_titular"`
Banco *string `json:"banco"` Banco *string `json:"banco"`
@ -443,6 +459,10 @@ func (s *Service) Update(ctx context.Context, id string, input UpdateProfissiona
Endereco: toPgText(input.Endereco), Endereco: toPgText(input.Endereco),
Cidade: toPgText(input.Cidade), Cidade: toPgText(input.Cidade),
Uf: toPgText(input.Uf), Uf: toPgText(input.Uf),
Cep: toPgText(input.Cep),
Numero: toPgText(input.Numero),
Complemento: toPgText(input.Complemento),
Bairro: toPgText(input.Bairro),
Whatsapp: toPgText(input.Whatsapp), Whatsapp: toPgText(input.Whatsapp),
CpfCnpjTitular: toPgText(input.CpfCnpjTitular), CpfCnpjTitular: toPgText(input.CpfCnpjTitular),
Banco: toPgText(input.Banco), Banco: toPgText(input.Banco),