An open API service indexing awesome lists of open source software.

https://github.com/as400jplpc/libpq-wrapper

wrapper de base en c++
https://github.com/as400jplpc/libpq-wrapper

c-plus-plus libpq postgresql wrapper

Last synced: about 2 months ago
JSON representation

wrapper de base en c++

Awesome Lists containing this project

README

          

# libpq-wrapper
wrapper de base en c++ une class

travail avec gcc-8 c++11... c++17

fait avec XUBUNTU / DEBIAN / MANJARO

il est basé sur libpq C API

ce projet à pour but de simplifier l'accès au travers de libpq mise à disposition par PostGreSql.

projet 2018-03-18 (C) 2018 Copyright 2018

je voudrais remercier...

THANK YOU MERCI BEAUCOUP

le site quebecois https://h-deb.clg.qc.ca/ pour son travaille de divulgation

exemple: https://h-deb.clg.qc.ca/Sujets/Divers--cplusplus/templates_variadiques.html

https://stackoverflow.com une mine d'or pour comprendre avec des examples

https://docs.postgresql.fr/ pour tous les efforts pour la traduction


le site Français wikiversity https://fr.wikiversity.org/wiki/Langage_C%2B%2B

le site cppreference http://en.cppreference.com/w/

http://fr.cppreference.com/w/

le site cplusplus http://www.cplusplus.com/reference/

le site beaver https://dbeaver.com/ pour sa simplicité

le site pgadmin4 https://www.pgadmin.org/ pour tous ses efforts de migrations

et tout ceux qui part leur publication sur des sujets pointus mon permis d'avancé.

ce projet avec ZONED sont intimement lier et conjointement permettent d'approcher un langage de type 4G

Le sujet qui sera développer après la validation du wrapper

Le wrapper se base libpq de PostGreSql

une class libpqwrp.a library pq (libpq) wrp (wrapper)

ou une class libpqwrp.hpp

pour contenir les éléments qui permettent de rendre flexible l'ensemble du process.

pour avoir plusieurs connexions par exemple

une pour les lock update

une pour les read

cela permet de rendre les commits independants etc.....

de faire des pointeurs et de profiter de ses avantages pour le nettoyage de mémoire.

le contrôle du clear de PGresult

la possibilité de faire du istream ou ostream

la récupération du nom avec traitement switch

un type template de variadique pour les requêtes

un autre type stringstream pour les résultats de requête

possibilté d'avoir plusieurs cursor

de traiter les double et int

traitement lock enregistrement select for update avec serialisation

traitement des erreurs...

je souhaite avoir été clair.

il y a plusieurs approches et de façon de traiter les données

il est certainement possible d'aller beaucoup plus loin,

soit dans les traitements d'erreurs .....sachez que sous pgsql ECPG on peut aller beaucoup plus loin

ou insérer des particularitées en relation avec le metier....

mais d'après moi cela serait autre chose qu'un wrapper

ps j'ai laissé en commentaire une ligne pour connaitre les codes retour d'intérroguation ....



N'oubliez pas d'ouvrir un role pour la lecture seulement (read only) par exemple :


CREATE ROLE Read_Only_User WITH LOGIN PASSWORD 'read'

NOSUPERUSER INHERIT NOCREATEDB NOCREATEROLE NOREPLICATION VALID UNTIL 'infinity';

GRANT CONNECT ON DATABASE "CGIFCH" TO Read_Only_User;

GRANT USAGE ON SCHEMA public TO Read_Only_User;

GRANT SELECT ON ALL TABLES IN SCHEMA public TO Read_Only_User;

GRANT SELECT ON ALL SEQUENCES IN SCHEMA public TO Read_Only_User;

Utiliser la Lib libpqwrp.a ex: Tiostream ou #include ex:Tclasse (Encours d'élaboration)

slc.begin();
requete = slc.prepare( \
"SELECT " \
"cl.column_name,cl.ORDINAL_POSITION,cl.DATA_TYPE,cl.CHARACTER_MAXIMUM_LENGTH,cl.NUMERIC_PRECISION,cl.NUMERIC_SCALE " \
",(select pg_catalog.col_description(oid,cl.ordinal_position::int) from pg_catalog.pg_class c where c.relname=cl.table_name) as column_comment " \
"FROM information_schema.columns cl " \
"WHERE cl.table_catalog='?' and cl.table_name='?' " \
" order by 2 ; " ,(char*) gtk_entry_get_text(eDATABASE) ,(char*) gtk_label_get_text(eTABLE) );

slc.begin();
slc.opensql(requete, cursorName);
if ( !slc.errorSQL ) do
{
if ( ! slc.fetchEOF )
{

sqlx = slc.result();

sqlx>>column_name>>column_ordre>>column_type>>column_length>>column_precision>>column_scale>>column_comment;
std::cout<>>> "<>>> "<
un exemple de génération de source pour des requêtes