Subversion Repositories eFlore/Projets.eflore-projets

Rev

Rev 821 | Rev 823 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
821 raphael 1
# Ce Makefile effectue les substitutions de nom de base de données
2
# nécessaire au préalable de l'application des scripts SQL
3
 
4
# Cela est d'un part moins complexe:
5
# - qu'un script PHP (interpréteur, getopt, framework, ...)
6
# - qu'un shell-script (lancement avec make)
7
# et d'autre part plus maintenable qu'un shell-script car
8
# le versionnage des fichiers (inc ".current") permet certaines facilités.
9
 
10
 
11
# TODO:
12
# idéalement, ce Makefile devrait permettre une bonne gestion du jeu de dépendances
13
# entre les scripts, seulement le lancement d'un script pouvant nécessiter un login/mdp
14
# il est difficile de vouloir rester "simple".
822 raphael 15
# Ce serait cependant la meilleure manière de procéder, ainsi "maj2" ne serait lancé qu'en
16
# cas de succès de "maj1", celui-ci pouvant être détecté comme "déjà exécuté" ou non.
17
# cf target "maj1" ci-dessous
821 raphael 18
 
19
 
822 raphael 20
# à l'aide de, note certains de ces fichiers n'ont pas cours dans le cadre de la maj1 (juillet/août 2013)
816 raphael 21
# echo $(egrep -l 'BASE(SOURCE|EDIT|ANNUAIRE)' *.sql)
821 raphael 22
fichiers = cel_references.sql dedup-ordre-201307.sql fix-utilisateur-32.sql maj-cleanup-201307.sql maj-nom-ret.sql maj-referentiel-201307.sql maj-referentiel-und-201307.sql maj-struct-201307.sql redempteur.sql referonosaure.sql .current
816 raphael 23
 
24
# la base de données à modifier
25
alterdb ?= tb_cel_test
26
 
27
# pour bdtfxa, bdtxa, isfan, nvjfl, nva, baseflor, ... lecture seule;
28
# utilisée pour actualiser les enregistrements de cel_obs dans referonosaure.sql
29
sourcedb ?= tb_eflore
30
 
31
# pour annuaire_tela, lecture seule;
32
# utilisée pour initialiser cel_utilisateurs dans maj-struct-201307.sql
33
annuairedb ?= tela_prod_v4
34
 
822 raphael 35
 
36
# génère les fichiers avec les bases de données souhaitées
37
compile: reset
821 raphael 38
	@sed -i -e 's/`BASEEDIT`/`$(alterdb)`/g'  \
820 raphael 39
		   -e 's/`BASEANNUAIRE`/`$(annuairedb)`/g'  \
40
		   -e 's/`BASESOURCE`/`$(sourcedb)`/g'  \
816 raphael 41
		   $(fichiers)
822 raphael 42
	@printf "Attention: les changements s'appliqueront sur la base \"%s\"\nLes sources utilisées seront: annuaire=\"%s\" ,  sources=\"%s\"\n(Ctrl+C pour interrompre, Enter pour continuer)\n" \
43
			`grep ^BASEEDIT .current|cut -d '\`' -f2` \
44
			`grep ^BASEANNUAIRE .current|cut -d '\`' -f2` \
45
			`grep ^BASESOURCE .current|cut -d '\`' -f2`
46
	@read
820 raphael 47
 
48
reset:
822 raphael 49
	@svn revert $(fichiers) &> /dev/null
820 raphael 50
 
51
help:
52
	@echo "make [alterdb=<tb_cel_test>] [sourcedb=<tb_eflore>] [annuairedb=<tela_prod_v4>]"
53
 
821 raphael 54
 
822 raphael 55
# mise à jour de juillet/août 2013
56
# spécifier dans les targets l'ordre (cf A_LIRE.txt)
57
maj1: compile cel_references maj-struct-201307 maj-cleanup-201307 fix-utilisateur-32 dedup-ordre-201307
58
#	@echo 'cat cel_references.sql maj-struct-201307.sql maj-cleanup-201307.sql fix-utilisateur-32.sql dedup-ordre-201307.sql|mysql $(alterdb)'
59
	@echo done
821 raphael 60
 
822 raphael 61
 
62
 
821 raphael 63
cel_references:
822 raphael 64
#@mysqldump -dNq $(alterdb) cel_references 2>/dev/null|grep -q ^CREATE || mysql < cel_references.sql
65
	@mysql -N $(alterdb) <<<"DESC cel_references" 2>/dev/null|grep -q referentiel || mysql < cel_references.sql
66
 
67
maj-struct-201307:
68
	@mysql -N $(alterdb) <<<"DESC cel_obs nom_sel"|grep -q 601 || mysql < maj-struct-201307.sql
69
 
70
maj-cleanup-201307:
71
	@ ! mysql -N $(alterdb) <<<"SELECT 1 FROM cel_obs WHERE date_observation = '0000-00-00 00:00:00' LIMIT 1"|grep -q 1 || mysql < maj-cleanup-201307.sql
72
 
73
fix-utilisateur-32:
74
	@mysql -N $(alterdb) <<<"DESC cel_obs ce_utilisateur"|grep -q 255 || mysql < fix-utilisateur-32.sql
75
 
821 raphael 76
dedup-ordre-201307:
822 raphael 77
#@mysql -N $(alterdb) <<<'SELECT distinct ce_utilisateur FROM `cel_obs` GROUP BY ce_utilisateur, ordre HAVING COUNT(*) > 1'|grep -q . || mysql < dedup-ordre-201307.sql
78
	@mysql -N $(alterdb) <<<"SHOW INDEX FROM cel_obs"|grep -q couple_user_ordre || mysql < dedup-ordre-201307.sql
79
 
80
 
81
# pour une prochaine maj
821 raphael 82
maj-nom-ret:
822 raphael 83
	@mysql -N <<<'SELECT count(1) FROM `$(alterdb)`.`cel_obs` c LEFT JOIN `$(sourcedb)`.`bdtfx_v1_01` b on (c.nom_ret = b.nom_sci) WHERE nom_ret_nn = 0 AND c.nom_ret != "" AND id_observation NOT IN ( SELECT id_observation FROM `$(alterdb)`.`cel_obs` c, `$(sourcedb)`.`bdtfx_v1_01` b WHERE c.nom_ret = b.nom_sci AND c.nom_ret_nn = 0 );'|grep -q 0