Skip to content

Tarefa - ODBC e ORM #135

@JosephDouglas7

Description

@JosephDouglas7

INSERT INTO atividades (nome, descricao)
VALUES ('Implementação de API', 'Criar endpoints REST para integração');

INSERT INTO projeto_atividade (projeto_id, atividade_id)
VALUES (1, (SELECT id FROM atividades WHERE nome = 'Implementação de API' LIMIT 1));

UPDATE projetos
SET lider_id = 5
WHERE id = 1;

SELECT p.nome AS projeto, a.nome AS atividade, a.descricao, a.data_criacao
FROM projetos p
JOIN projeto_atividade pa ON p.id = pa.projeto_id
JOIN atividades a ON pa.atividade_id = a.id
ORDER BY p.nome, a.data_criacao DESC;

#include <soci/soci.h>
#include <soci/backends/postgresql/soci-postgresql.h>
#include

void inserirAtividade(soci::session& sql) {
std::string nome = "Desenvolvimento Backend";
std::string descricao = "Criar API REST para integração";

sql << "INSERT INTO atividades (nome, descricao) VALUES (:nome, :descricao)",
    soci::use(nome), soci::use(descricao);

std::cout << "Atividade inserida com sucesso!\n";

}

void atualizarLiderProjeto(soci::session& sql) {
int projetoID = 1;
int novoLiderID = 5;

sql << "UPDATE projetos SET lider_id = :lider WHERE id = :id",
    soci::use(novoLiderID), soci::use(projetoID);

std::cout << "Líder do projeto atualizado!\n";

}

void listarProjetosAtividades(soci::session& sql) {
soci::rowsetsoci::row rs = sql.prepare <<
"SELECT p.nome AS projeto, a.nome AS atividade, a.descricao, a.data_criacao "
"FROM projetos p "
"JOIN projeto_atividade pa ON p.id = pa.projeto_id "
"JOIN atividades a ON pa.atividade_id = a.id "
"ORDER BY p.nome, a.data_criacao DESC";

std::cout << " Listagem de Projetos e Atividades:\n";
for (const auto& row : rs) {
    std::cout << "   Projeto: " << row.get<std::string>(0) 
              << " | Atividade: " << row.get<std::string>(1) 
              << " | Descrição: " << row.get<std::string>(2) 
              << " | Criado em: " << row.get<std::string>(3) << "\n";
}

}

int main() {
try {
soci::session sql(soci::postgresql, "dbname=AtividadesBD user=admin password=senha123 host=localhost");

    inserirAtividade(sql);
    atualizarLiderProjeto(sql);
    listarProjetosAtividades(sql);
    
} catch (const std::exception& e) {
    std::cerr << "Erro: " << e.what() << "\n";
}

return 0;

}

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions