Retrait de CouchDB

This commit is contained in:
2025-10-25 14:27:33 +02:00
parent bdd6cc9a1c
commit 874e07c7e3
7 changed files with 2 additions and 239 deletions

View File

@@ -99,42 +99,6 @@ services:
caddy.reverse_proxy: "{{upstreams 80}}"
caddy.tls: internal
# ----------------------------------------------------------------------
# Documents
#
# ----------------------------------------------------------------------
# CouchDB
# Single-node document database
# https://couchdb.apache.org/
couchdb:
image: couchdb:3.5
volumes:
- couchdb_data:/opt/couchdb/data
environment:
COUCHDB_USER: ${COUCHDB_USER}
COUCHDB_PASSWORD: ${COUCHDB_PASSWORD}
ports:
- 5984:5984
networks:
- caddy_net
labels:
caddy: couchdb.localhost
caddy.reverse_proxy: "{{upstreams 5984}}"
caddy.tls: internal
couchdb-init:
build:
dockerfile: ./couchdb-init.Dockerfile
context: .
environment:
COUCHDB_USER: ${COUCHDB_USER}
COUCHDB_PASSWORD: ${COUCHDB_PASSWORD}
depends_on:
- couchdb
networks:
- caddy_net
# Redis
# In-memory key-value database
# https://redis.io/fr/

View File

@@ -1,12 +0,0 @@
FROM python:3.13-slim
# Installer requests une seule fois dans l'image
RUN python3 -m pip install --no-cache-dir requests
WORKDIR /app
# Copier le script Python
COPY couchdb-init.py /app/
# Lancer le script par défaut
ENTRYPOINT ["python3", "couchdb-init.py"]

View File

@@ -1,39 +0,0 @@
import os, time, requests
COUCHDB_URL = 'http://couchdb:5984'
USER = os.getenv('COUCHDB_USER', 'admin')
PASSWORD = os.getenv('COUCHDB_PASSWORD', 'password')
for _ in range(30):
try:
r = requests.get(COUCHDB_URL)
if r.ok:
break
except Exception:
time.sleep(2)
else:
print('❌ CouchDB n\'est pas joignable')
exit(1)
print('🚀 Vérification de la configuration...')
try:
dbs = requests.get(f'{COUCHDB_URL}/_all_dbs', auth=(USER, PASSWORD))
if dbs.ok and '_users' in dbs.json():
print('✅ CouchDB déjà initialisé.')
exit(0)
except Exception:
pass
print('🛠 Initialisation du mode single-node...')
payload = {
"action": "enable_single_node",
"username": USER,
"password": PASSWORD,
"bind_address": "0.0.0.0"
}
r1 = requests.post(f'{COUCHDB_URL}/_cluster_setup', auth=(USER, PASSWORD), json=payload)
if r1.ok:
print('✅ CouchDB initialisé avec succès.')
else:
print('❌ Erreur lors de l\'initialisation :', r1.text)

View File

@@ -1,63 +0,0 @@
@couchDB = http://couchdb.localhost
### Init
POST {{couchDB}}/_cluster_setup
Authorization: Basic {{$dotenv COUCHDB_USER}}:{{$dotenv COUCHDB_PASSWORD}}
Content-Type: application/json
{
"action": "enable_single_node",
"username": "{{$dotenv COUCHDB_USER}}",
"password": "{{$dotenv COUCHDB_PASSWORD}}",
"bind_address": "0.0.0.0",
"port": 5984
}
###
GET {{couchDB}}/_all_dbs
Authorization: Basic {{$dotenv COUCHDB_USER}}:{{$dotenv COUCHDB_PASSWORD}}
### Creates a new database.
PUT {{couchDB}}/db
Authorization: Basic {{$dotenv COUCHDB_USER}}:{{$dotenv COUCHDB_PASSWORD}}
### Creates a new document in the specified database, using the supplied JSON document structure.
POST {{couchDB}}/db
Accept: application/json
Content-Type: application/json
Authorization: Basic {{$dotenv COUCHDB_USER}}:{{$dotenv COUCHDB_PASSWORD}}
{
"servings": 4,
"subtitle": "Delicious with fresh bread",
"title": "Fish Stew"
}
###
GET {{couchDB}}/db/_all_docs
Authorization: Basic {{$dotenv COUCHDB_USER}}:{{$dotenv COUCHDB_PASSWORD}}
###
GET {{couchDB}}/db/2c2135ff744c3b98407572ed4f000cad
Authorization: Basic {{$dotenv COUCHDB_USER}}:{{$dotenv COUCHDB_PASSWORD}}
###
POST {{couchDB}}/db/_find
Authorization: Basic {{$dotenv COUCHDB_USER}}:{{$dotenv COUCHDB_PASSWORD}}
Accept: application/json
Content-Type: application/json
Content-Length: 168
Host: localhost:5984
{
"selector": {
"year": {"$gt": 2010}
},
"fields": ["_id", "_rev", "year", "title"],
"sort": [{"year": "asc"}],
"limit": 2,
"skip": 0,
"execution_stats": true
}

View File

@@ -1,28 +0,0 @@
-4.006666897046123 48.7528720020309,
-4.005870355067274 48.75026102618178,
-4.003629135498721 48.748652881336724,
-3.999937714914126 48.7464361648583,
-3.9950927255526962 48.74493656593118,
-3.9940050748797225 48.745523370840516,
-3.9910057957512173 48.745762437542936,
-3.9901158997460566 48.74515390188169,
-3.991851437957331 48.74306933218229,
-3.9887834656682424 48.7393151550319,
-3.993896752679784 48.73699956468981,
-3.9941353727403235 48.74093375678278,
-3.9980896480292487 48.74147327911715,
-4.000544025794788 48.740416709111294,
-4.00364608658179 48.741630638707136,
-4.005077806945022 48.740394228657095,
-4.007054944589484 48.740956236995665,
-4.008248044892178 48.74050663082754,
-4.008657107853101 48.740888796326814,
-4.007157210329716 48.74122599876611,
-4.00933887945464 48.7431367698581,
-4.009234652034756 48.74313664396521,
-4.006666897046123 48.7528720020309,
54,41,42,1,1,"LINESTRING (-4.0283457106078151 48.74819693416071686, -4.0277798896546626 48.74843925273770395, -4.02709096211884532 48.74871478406565473, -4.02662791246362506 48.74891584651362564, -4.02625521396064201 48.74902010079956938, -4.02561146200094466 48.7490424409755434, -4.02451595428005682 48.74905733442068367, -4.02391737789647941 48.74907222786141858, -4.02363503054573446 48.7490349942513248, -4.02274281291738145 48.74909456801422181, -4.02174895024276235 48.74906478114159114, -4.02093578987261857 48.74906478114159114, -4.02015407493021737 48.74906065795587295)"
56,42,37,1,1,"LINESTRING (-4.02015407493021737 48.74906065795587295, -4.01973160932402873 48.74875605686673197, -4.01938565220795851 48.74824615905019698, -4.01924319927781237 48.74797778970009432, -4.01875478923159868 48.74780334885392818, -4.0183884816969373 48.74761548880393036, -4.01783902039494478 48.74741420939959369, -4.01763551620902248 48.74705190444013425, -4.01739131118591519 48.74666275916671054, -4.01718780699999201 48.7464614759462691, -4.01674202846954209 48.74639773953580146)"
96,65,62,1,1,"LINESTRING (-4.02286843896043855 48.74610257019232051, -4.02284812996929819 48.74649092768017766, -4.02273179974516371 48.7467133780762012, -4.02244097418483104 48.74677474352942141, -4.02211524955725697 48.74681309689962205, -4.02174299284003034 48.74674406081217626, -4.02134747007797611 48.74662900045570524, -4.02106827754005636 48.74655229340503126, -4.02083561709178827 48.74679775555504335, -4.02053315850904092 48.74708156967139416, -4.02028886503836169 48.74713526405361819, -4.0200562045900945 48.74690514486865567, -4.01975199012698514 48.74659331482603619)"
85,35,60,1,1,"LINESTRING (-4.01847183812000619 48.74490975460546593, -4.01851483744327798 48.7451174969493124, -4.01875102113744109 48.74550314198440759, -4.01912216694255253 48.74588878406018466, -4.01942583169218981 48.74622992650653686, -4.01975199012698514 48.74659331482603619)"
1 -4.006666897046123 48.7528720020309
2 -4.005870355067274 48.75026102618178
3 -4.003629135498721 48.748652881336724
4 -3.999937714914126 48.7464361648583
5 -3.9950927255526962 48.74493656593118
6 -3.9940050748797225 48.745523370840516
7 -3.9910057957512173 48.745762437542936
8 -3.9901158997460566 48.74515390188169
9 -3.991851437957331 48.74306933218229
10 -3.9887834656682424 48.7393151550319
11 -3.993896752679784 48.73699956468981
12 -3.9941353727403235 48.74093375678278
13 -3.9980896480292487 48.74147327911715
14 -4.000544025794788 48.740416709111294
15 -4.00364608658179 48.741630638707136
16 -4.005077806945022 48.740394228657095
17 -4.007054944589484 48.740956236995665
18 -4.008248044892178 48.74050663082754
19 -4.008657107853101 48.740888796326814
20 -4.007157210329716 48.74122599876611
21 -4.00933887945464 48.7431367698581
22 -4.009234652034756 48.74313664396521
23 -4.006666897046123 48.7528720020309
24 54 41 42 1 1 LINESTRING (-4.0283457106078151 48.74819693416071686, -4.0277798896546626 48.74843925273770395, -4.02709096211884532 48.74871478406565473, -4.02662791246362506 48.74891584651362564, -4.02625521396064201 48.74902010079956938, -4.02561146200094466 48.7490424409755434, -4.02451595428005682 48.74905733442068367, -4.02391737789647941 48.74907222786141858, -4.02363503054573446 48.7490349942513248, -4.02274281291738145 48.74909456801422181, -4.02174895024276235 48.74906478114159114, -4.02093578987261857 48.74906478114159114, -4.02015407493021737 48.74906065795587295)
25 56 42 37 1 1 LINESTRING (-4.02015407493021737 48.74906065795587295, -4.01973160932402873 48.74875605686673197, -4.01938565220795851 48.74824615905019698, -4.01924319927781237 48.74797778970009432, -4.01875478923159868 48.74780334885392818, -4.0183884816969373 48.74761548880393036, -4.01783902039494478 48.74741420939959369, -4.01763551620902248 48.74705190444013425, -4.01739131118591519 48.74666275916671054, -4.01718780699999201 48.7464614759462691, -4.01674202846954209 48.74639773953580146)
26 96 65 62 1 1 LINESTRING (-4.02286843896043855 48.74610257019232051, -4.02284812996929819 48.74649092768017766, -4.02273179974516371 48.7467133780762012, -4.02244097418483104 48.74677474352942141, -4.02211524955725697 48.74681309689962205, -4.02174299284003034 48.74674406081217626, -4.02134747007797611 48.74662900045570524, -4.02106827754005636 48.74655229340503126, -4.02083561709178827 48.74679775555504335, -4.02053315850904092 48.74708156967139416, -4.02028886503836169 48.74713526405361819, -4.0200562045900945 48.74690514486865567, -4.01975199012698514 48.74659331482603619)
27 85 35 60 1 1 LINESTRING (-4.01847183812000619 48.74490975460546593, -4.01851483744327798 48.7451174969493124, -4.01875102113744109 48.74550314198440759, -4.01912216694255253 48.74588878406018466, -4.01942583169218981 48.74622992650653686, -4.01975199012698514 48.74659331482603619)

View File

@@ -1,59 +0,0 @@
set SEARCH_PATH to public,postgis;
create table point (
id serial primary key,
nom text not null,
altitude double precision,
geom geometry(point, 4326) not null
);
create index idx_point_geom
on point using gist (geom);
create table route (
id serial primary key,
depart int,
arrivee int,
geom geometry(linestring, 4326) not null,
longueur double precision
);
create index idx_route_geom
on route using gist (geom);
create or replace function maj_longueur()
returns trigger as $$
begin
new.longueur := st_length(new.geom) * 1000;
return new;
end;
$$ language plpgsql;
create trigger trigger_longueur
before insert or update on route
for each row
execute function maj_longueur();
-- ************************************************************
create table route_cout (
route_id int references route(id),
tag text,
cout float,
cout_inverse float,
primary key (route_id, tag)
);
create table zone (
id int primary key,
nom text,
categorie text,
geom geometry(polygon, 4326) -- on choisit srid 4326 (wgs84)
);
-- ************************************************************
\COPY point FROM '/tmp/point.csv' (FORMAT CSV, header, ENCODING 'UTF8');
\COPY route(id, depart, arrivee, geom) FROM '/tmp/route.csv' (FORMAT CSV, header, ENCODING 'UTF8');
\COPY route_cout FROM '/tmp/route_cout.csv' (FORMAT CSV, header, ENCODING 'UTF8');
\COPY zone FROM '/tmp/zone.csv' (FORMAT CSV, header, ENCODING 'UTF8');

View File

@@ -4,8 +4,8 @@ SELECT plan(4);
SELECT is(
(SELECT nb_total_familles FROM nb_total_familles),
137::bigint,
'La table famille contient 137 enregistrements'
138::bigint,
'La table famille contient 138 enregistrements'
);
SELECT is(