diff --git a/Dockerfile b/Dockerfile index 3688034..6172b10 100644 --- a/Dockerfile +++ b/Dockerfile @@ -67,8 +67,55 @@ RUN checkinstall -D --install=no --fstrans=no --backup=no --pakdir=/tmp \ --pkgname=pgrouting --pkgversion=${pgrouting_release} \ --nodoc +# ============================================================================= +# pg_cron +# +FROM build-pgdev AS pgcron + +# Télécharger +ARG pg_cron_release=1.6.7 + +ADD "https://github.com/citusdata/pg_cron/archive/refs/tags/v${pg_cron_release}.tar.gz" \ + /tmp/pg_cron.tar.gz + +# Extraire +RUN tar -xvf /tmp/pg_cron.tar.gz -C /tmp && \ + rm -rf /tmp/pg_cron.tar.gz + +# Build from source +WORKDIR /tmp/pg_cron-${pg_cron_release} +RUN make -j$(nproc) + +# Create debian package +RUN checkinstall -D --install=no --fstrans=no --backup=no --pakdir=/tmp --nodoc + +# ============================================================================= +# postgresql-anonymizer +# +FROM build-pgdev AS pganon + +ARG anon_release=2.3.0 + +ADD "https://gitlab.com/dalibo/postgresql_anonymizer/-/archive/${anon_release}/postgresql_anonymizer-${anon_release}.tar.gz" \ + /tmp/anon.tar.gz + +RUN mkdir /tmp/anon && \ + tar -xvf /tmp/anon.tar.gz -C /tmp && \ + rm -rf /tmp/anon.tar.gz + +# edit make to french data + +WORKDIR /tmp/postgresql_anonymizer-1.3.2 +RUN make +#-j$(nproc) + +# Create debian package +RUN checkinstall -D --install=no --fstrans=no --backup=no --pakdir=/tmp \ + --nodoc + # ============================================================================= # pgVector +# FROM build-pgdev AS pgvector ARG pgvector_release=0.6.2 @@ -112,6 +159,8 @@ COPY --from=pgtap /pgtap-dist/ / COPY --from=pgrouting /tmp/*.deb /tmp COPY --from=pgvector /tmp/*.deb /tmp +COPY --from=pganon /tmp/*.deb /tmp +COPY --from=pgcron /tmp/*.deb /tmp RUN set -eux; \ apt-get install \ diff --git a/README.md b/README.md index fb4c65b..cf19105 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ ### Construire l'image ```shell -docker build -t iut/pgsql:2025-09 . +docker build -t iut/pgsql:2025-10 . ``` ## Données @@ -15,7 +15,7 @@ Le nom des tables est au singulier et en minuscule table |colonnes --- |--- adherent | id, nom, prenom, genre, naissance, codepostal -famille | code, famille, code_parent +famille | code, famille, code_parent, arborescence (ltree), gauche, droite article | code, article, famille_code, factpoids, prix ticket | id, date_ticket, adherent_id, mode_rglt ligne | id, ticket_id, article_code, prix_unitaire, quantite diff --git a/ToDo.md b/ToDo.md index 26ff2ee..30b4f9f 100644 --- a/ToDo.md +++ b/ToDo.md @@ -7,3 +7,4 @@ - ~~Ajouter la table adherent~~ - ~~Trier les ticket par date~~ - ~~Trier les ticket par id~~ +- Parrainage avec reflexion diff --git a/compose.yaml b/compose.yaml index ec658d6..da7eb75 100644 --- a/compose.yaml +++ b/compose.yaml @@ -1,6 +1,6 @@ services: database: - image: iut/pgsql:2025-09 + image: iut/pgsql:2025-10 environment: POSTGRES_INITDB_ARGS: "--locale-provider=icu --icu-locale=fr-FR" POSTGRES_DB: ${COMPOSE_PROJECT_NAME} diff --git a/data/famille.csv b/data/famille.csv index e7652d8..6722c52 100644 --- a/data/famille.csv +++ b/data/famille.csv @@ -1,7 +1,7 @@ code,famille,code_parent,arborescence 01,* Primeur,,Jardin.Primeur 02,** Légumes,01,Jardin.Primeur.Legumes -02RACINE,**** Racines & Tubercules,02,Jardin.Primeur.Legumes.Racine +02RACINE,*** Racines & Tubercules,02,Jardin.Primeur.Legumes.Racine 02BETT,Betterave,02RACINE,Jardin.Primeur.Legumes.Racine.Betterave 02CARO,Carotte,02RACINE,Jardin.Primeur.Legumes.Racine.Carotte 02PANA,Panais,02RACINE,Jardin.Primeur.Legumes.Racine.Panais @@ -10,11 +10,11 @@ code,famille,code_parent,arborescence 02PATATE,Patate douce,02RACINE,Jardin.Primeur.Legumes.Racine.PatateDouce 02POMM,Pomme de terre,02RACINE,Jardin.Primeur.Legumes.Racine.PommeDeTerre 02RADI,Radis,02RACINE,Jardin.Primeur.Legumes.Racine.Radis -02CUCURB,**** Cucurbitacées,02,Jardin.Primeur.Legumes.Cucurbitacees +02CUCURB,*** Cucurbitacées,02,Jardin.Primeur.Legumes.Cucurbitacees 02COUR,Courgette,02CUCURB,Jardin.Primeur.Legumes.Cucurbitacees.Courgette 02POTIR,Potiron,02CUCURB,Jardin.Primeur.Legumes.Cucurbitacees.Potiron 02CONC,Concombre,02CUCURB,Jardin.Primeur.Legumes.Cucurbitacees.Concombre -02LEGUM,**** Légumineuses,02,Jardin.Primeur.Legumes.Legumineuses +02LEGUM,*** Légumineuses,02,Jardin.Primeur.Legumes.Legumineuses 02POIS,Pois,02LEGUM,Jardin.Primeur.Legumes.Legumineuses.Pois 02HARI,Haricot,02LEGUM,Jardin.Primeur.Legumes.Legumineuses.Haricot 02COMPOS,*** Produits composés,02,Jardin.Primeur.ProduitsComposes @@ -25,7 +25,7 @@ code,famille,code_parent,arborescence 02AROM,Aromates,02AROMCOND,Jardin.Primeur.Assaisonnements.Aromates 02CONDIM,Condiments,02AROMCOND,Jardin.Primeur.Assaisonnements.Condiments 02EPIC,Epices,02AROMCOND,Jardin.Primeur.Assaisonnements.Epices -02FEUILLE,**** Feuilles et tiges,02,Jardin.Primeur.Legumes.Feuilles +02FEUILLE,*** Feuilles et tiges,02,Jardin.Primeur.Legumes.Feuilles 02BETTE,Bette,02FEUILLE,Jardin.Primeur.Legumes.Feuilles.Bette 02EPIN,Epinard,02FEUILLE,Jardin.Primeur.Legumes.Feuilles.Epinard 02SALA,Salade,02FEUILLE,Jardin.Primeur.Legumes.Feuilles.Salade @@ -33,7 +33,7 @@ code,famille,code_parent,arborescence 02FENO,Fenouil,02FEUILLE,Jardin.Primeur.Legumes.Feuilles.Fenouil 02ASP,Asperge,02FEUILLE,Jardin.Primeur.Legumes.Feuilles.Asperge 02POIR,Poireau,02FEUILLE,Jardin.Primeur.Legumes.Feuilles.Poireau -02SOLAN,**** Solanacées,02,Jardin.Primeur.Legumes.Solanacees +02SOLAN,*** Solanacées,02,Jardin.Primeur.Legumes.Solanacees 02AUBE,Aubergine,02SOLAN,Jardin.Primeur.Legumes.Solanacees.Aubergine 02POIV,Poivron,02SOLAN,Jardin.Primeur.Legumes.Solanacees.Poivron 02TOMA,Tomates,02SOLAN,Jardin.Primeur.Legumes.Solanacees.Tomates @@ -53,7 +53,7 @@ code,famille,code_parent,arborescence 03CUCURB,*** Cucurbitacées,03,Jardin.Primeur.Fruits.Cucurbitacees 03MELON,Melon,03CUCURB,Jardin.Primeur.Fruits.Cucurbitacees.Melon 03PASTEQUE,Pastèque,03CUCURB,Jardin.Primeur.Fruits.Cucurbitacees.Pasteque -03EXOTIQ,Fruits exotiques,,Jardin.Primeur.Fruits.Exotiques +03EXOTIQ,** Fruits exotiques,,Jardin.Primeur.Fruits.Exotiques 03ANANAS,Ananas,03EXOTIQ,Jardin.Primeur.Fruits.Exotiques.Ananas 03AVOCAT,Avocat,03EXOTIQ,Jardin.Primeur.Fruits.Exotiques.Avocat 03CHERI,Chérimoya,03EXOTIQ,Jardin.Primeur.Fruits.Exotiques.Cherimoya @@ -78,8 +78,9 @@ code,famille,code_parent,arborescence 04TISANE,Tisane,04BOISSONS,Jardin.Epicerie.Boisson.Tisane 04THE,Thé,04BOISSONS,Jardin.Epicerie.Boisson.The 04CEREALE,Céréale,04,Jardin.Epicerie.Cereale -04LENT,Lentille,04,Jardin.Epicerie.Lentille -04HAR,Haricot,04,Jardin.Epicerie.Haricot +04LGSEC,Légumes secs,04,Jardin.Epicerie.Sec +04LENT,Lentille,04LGSEC,Jardin.Epicerie.Sec.Lentille +04HAR,Haricot,04LGSEC,Jardin.Epicerie.Sec.Haricot 04CONFISER,Confiserie,04,Jardin.Epicerie.Confiserie 04EP,Condiments,04,Jardin.Epicerie.Condiments 04FA,Farine,04,Jardin.Epicerie.Farine @@ -132,7 +133,7 @@ code,famille,code_parent,arborescence 12,** Producteurs,,Jardin.Producteurs 12ARTISMON,Artisans du Monde,12,Jardin.Producteurs.ArtisansDuMonde 12ECOLONIE,Ecolonie,12,Jardin.Producteurs.Ecolonie -12RELIONRO,Miel Relion -Roussel,12,Jardin.Producteurs.Relion +12RELIONRO,Miel Relion-Roussel,12,Jardin.Producteurs.Relion 12VACCEUX,Gaec du Vacceux,12,Jardin.Producteurs.Vacceux 15TRANSLEG,Epicerie,12,Jardin.Producteurs.Epicerie DIVERS,LIVRE,12,Jardin.Livre diff --git a/docker-entrypoint-initdb.d/1_initdb.sql b/docker-entrypoint-initdb.d/1_initdb.sql index 72e5b36..b5cb250 100644 --- a/docker-entrypoint-initdb.d/1_initdb.sql +++ b/docker-entrypoint-initdb.d/1_initdb.sql @@ -4,6 +4,7 @@ create extension if not exists postgis; create extension if not exists pgrouting; create extension if not exists vector; create extension if not exists pgcrypto; +create extension if not exists pganon; create table adherent ( id int primary key, @@ -45,3 +46,13 @@ create table ligne ( prix_unitaire decimal, quantite decimal ); + +create table fournisseur ( + id int primary key, + fournisseur text not null +); + +create table region + id int primary key, + region text not null +); diff --git a/docker-entrypoint-initdb.d/5_nestedsets.sql b/docker-entrypoint-initdb.d/5_nestedsets.sql index b085a5d..48a48d6 100644 --- a/docker-entrypoint-initdb.d/5_nestedsets.sql +++ b/docker-entrypoint-initdb.d/5_nestedsets.sql @@ -1,5 +1,5 @@ ALTER TABLE famille - ADD lft int, rgt int; + ADD gauche int, droite int; -- fonction auxiliaire récursive : reçoit le compteur 'n', retourne le compteur mis à jour CREATE OR REPLACE FUNCTION set_bounds(p_code INT, n INT) @@ -8,7 +8,7 @@ DECLARE child RECORD; BEGIN -- left - UPDATE famille SET lft = n WHERE code = p_code; + UPDATE famille SET gauche = n WHERE code = p_code; n := n + 1; -- parcours des enfants @@ -19,7 +19,7 @@ BEGIN END LOOP; -- right - UPDATE famille SET rgt = n WHERE code = p_code; + UPDATE famille SET droite = n WHERE code = p_code; n := n + 1; RETURN n; @@ -34,7 +34,7 @@ DECLARE n INT := 1; BEGIN -- remise à zéro (optionnel) - UPDATE famille SET lft = NULL, rgt = NULL; + UPDATE famille SET gauche = NULL, droite = NULL; -- pour chaque racine FOR root IN