Mercurial > hgrepos > hgweb.cgi > s4
annotate scripts/migrate-grp.sh @ 1006:4bc9494c00ff draft
Add clean-orphaned.sql migrate-grp.sh
author | HIROSE Yuuji <yuuji@gentei.org> |
---|---|
date | Sun, 05 Mar 2023 15:12:17 +0859 |
parents | |
children |
rev | line source |
---|---|
1006
4bc9494c00ff
Add clean-orphaned.sql migrate-grp.sh
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff
changeset
|
1 #!/bin/sh |
4bc9494c00ff
Add clean-orphaned.sql migrate-grp.sh
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff
changeset
|
2 # ./migrate-grp src-conf dst-conf GrpIDs |
4bc9494c00ff
Add clean-orphaned.sql migrate-grp.sh
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff
changeset
|
3 # eg) ./sitemoving.rb s4-config.sh s4-world-second.sh 8 |
4bc9494c00ff
Add clean-orphaned.sql migrate-grp.sh
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff
changeset
|
4 |
4bc9494c00ff
Add clean-orphaned.sql migrate-grp.sh
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff
changeset
|
5 [ -f $1 ] && . ./$1 |
4bc9494c00ff
Add clean-orphaned.sql migrate-grp.sh
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff
changeset
|
6 [ -f $2 ] && . ./$2 |
4bc9494c00ff
Add clean-orphaned.sql migrate-grp.sh
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff
changeset
|
7 . `dirname $1`/s4-funcs.sh |
4bc9494c00ff
Add clean-orphaned.sql migrate-grp.sh
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff
changeset
|
8 |
4bc9494c00ff
Add clean-orphaned.sql migrate-grp.sh
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff
changeset
|
9 dstdb=$DB |
4bc9494c00ff
Add clean-orphaned.sql migrate-grp.sh
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff
changeset
|
10 |
4bc9494c00ff
Add clean-orphaned.sql migrate-grp.sh
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff
changeset
|
11 echo db=$db dstdb=$dstdb masterdb=$S4MASTERDB URL=$URL M_URL=$S4MASTERURL |
4bc9494c00ff
Add clean-orphaned.sql migrate-grp.sh
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff
changeset
|
12 |
4bc9494c00ff
Add clean-orphaned.sql migrate-grp.sh
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff
changeset
|
13 shift 2 |
4bc9494c00ff
Add clean-orphaned.sql migrate-grp.sh
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff
changeset
|
14 |
4bc9494c00ff
Add clean-orphaned.sql migrate-grp.sh
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff
changeset
|
15 query "ATTACH DATABASE \"$S4MASTERDB\" AS src;" || abort "Cannot attach db #{dstdb}" |
4bc9494c00ff
Add clean-orphaned.sql migrate-grp.sh
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff
changeset
|
16 for grid; do |
4bc9494c00ff
Add clean-orphaned.sql migrate-grp.sh
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff
changeset
|
17 grid=$((0 + $grid)) |
4bc9494c00ff
Add clean-orphaned.sql migrate-grp.sh
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff
changeset
|
18 echo $grid |
4bc9494c00ff
Add clean-orphaned.sql migrate-grp.sh
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff
changeset
|
19 gnamesql="(SELECT gname FROM src.grp WHERE rowid=$grid)" |
4bc9494c00ff
Add clean-orphaned.sql migrate-grp.sh
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff
changeset
|
20 echo "Copying $grid..." |
4bc9494c00ff
Add clean-orphaned.sql migrate-grp.sh
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff
changeset
|
21 query "BEGIN;" |
4bc9494c00ff
Add clean-orphaned.sql migrate-grp.sh
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff
changeset
|
22 query "REPLACE INTO main.grp SELECT * FROM src.grp WHERE rowid=$grid;" |
4bc9494c00ff
Add clean-orphaned.sql migrate-grp.sh
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff
changeset
|
23 for tbl in grp_s grp_m grp_mem grp_mem_s grp_mem_m \ |
4bc9494c00ff
Add clean-orphaned.sql migrate-grp.sh
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff
changeset
|
24 grp_adm grp_adm_s grp_adm_m; do |
4bc9494c00ff
Add clean-orphaned.sql migrate-grp.sh
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff
changeset
|
25 query "REPLACE INTO main.$tbl SELECT * FROM src.$tbl |
4bc9494c00ff
Add clean-orphaned.sql migrate-grp.sh
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff
changeset
|
26 WHERE gname=$gnamesql;" |
4bc9494c00ff
Add clean-orphaned.sql migrate-grp.sh
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff
changeset
|
27 done |
4bc9494c00ff
Add clean-orphaned.sql migrate-grp.sh
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff
changeset
|
28 blogs=`query "SELECT group_concat(\"'\"||id||\"'\", ',') |
4bc9494c00ff
Add clean-orphaned.sql migrate-grp.sh
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff
changeset
|
29 FROM src.blog_s WHERE key='owner' AND val=$gnamesql;"` |
4bc9494c00ff
Add clean-orphaned.sql migrate-grp.sh
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff
changeset
|
30 echo blogs=$blogs |
4bc9494c00ff
Add clean-orphaned.sql migrate-grp.sh
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff
changeset
|
31 for tbl in blog blog_s blog_m; do |
4bc9494c00ff
Add clean-orphaned.sql migrate-grp.sh
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff
changeset
|
32 query <<-EOF |
4bc9494c00ff
Add clean-orphaned.sql migrate-grp.sh
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff
changeset
|
33 REPLACE INTO main.$tbl |
4bc9494c00ff
Add clean-orphaned.sql migrate-grp.sh
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff
changeset
|
34 SELECT * FROM src.$tbl |
4bc9494c00ff
Add clean-orphaned.sql migrate-grp.sh
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff
changeset
|
35 WHERE id IN ($blogs); |
4bc9494c00ff
Add clean-orphaned.sql migrate-grp.sh
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff
changeset
|
36 EOF |
4bc9494c00ff
Add clean-orphaned.sql migrate-grp.sh
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff
changeset
|
37 done |
4bc9494c00ff
Add clean-orphaned.sql migrate-grp.sh
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff
changeset
|
38 for blogid in $blogs; do |
4bc9494c00ff
Add clean-orphaned.sql migrate-grp.sh
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff
changeset
|
39 for tbl in article article_s article_m; do |
4bc9494c00ff
Add clean-orphaned.sql migrate-grp.sh
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff
changeset
|
40 query <<-EOF |
4bc9494c00ff
Add clean-orphaned.sql migrate-grp.sh
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff
changeset
|
41 REPLACE INTO main.$tbl |
4bc9494c00ff
Add clean-orphaned.sql migrate-grp.sh
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff
changeset
|
42 SELECT * FROM src.$tbl |
4bc9494c00ff
Add clean-orphaned.sql migrate-grp.sh
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff
changeset
|
43 WHERE id IN (SELECT id FROM src.article WHERE blogid IN ($blogs)); |
4bc9494c00ff
Add clean-orphaned.sql migrate-grp.sh
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff
changeset
|
44 EOF |
4bc9494c00ff
Add clean-orphaned.sql migrate-grp.sh
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff
changeset
|
45 done |
4bc9494c00ff
Add clean-orphaned.sql migrate-grp.sh
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff
changeset
|
46 done |
4bc9494c00ff
Add clean-orphaned.sql migrate-grp.sh
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff
changeset
|
47 query "END;" |
4bc9494c00ff
Add clean-orphaned.sql migrate-grp.sh
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff
changeset
|
48 done |
4bc9494c00ff
Add clean-orphaned.sql migrate-grp.sh
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff
changeset
|
49 exit |
4bc9494c00ff
Add clean-orphaned.sql migrate-grp.sh
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff
changeset
|
50 grid = g.to_i |
4bc9494c00ff
Add clean-orphaned.sql migrate-grp.sh
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff
changeset
|
51 # Copy group itself |
4bc9494c00ff
Add clean-orphaned.sql migrate-grp.sh
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff
changeset
|
52 gname = db.execute("SELECT gname FROM main.grp WHERE rowid=?", grid)[0][0] |
4bc9494c00ff
Add clean-orphaned.sql migrate-grp.sh
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff
changeset
|
53 r = db.execute("SELECT gname FROM dst.grp WHERE gname=?", gname) |
4bc9494c00ff
Add clean-orphaned.sql migrate-grp.sh
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff
changeset
|
54 if r[0] then |
4bc9494c00ff
Add clean-orphaned.sql migrate-grp.sh
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff
changeset
|
55 STDERR.printf("Skipping existing group %s\n", r[0][0]) |
4bc9494c00ff
Add clean-orphaned.sql migrate-grp.sh
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff
changeset
|
56 ####### next |
4bc9494c00ff
Add clean-orphaned.sql migrate-grp.sh
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff
changeset
|
57 end |
4bc9494c00ff
Add clean-orphaned.sql migrate-grp.sh
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff
changeset
|
58 printf("Copying group %s...\n", gname) |
4bc9494c00ff
Add clean-orphaned.sql migrate-grp.sh
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff
changeset
|
59 db.execute("BEGIN;"); |
4bc9494c00ff
Add clean-orphaned.sql migrate-grp.sh
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff
changeset
|
60 db.execute( |
4bc9494c00ff
Add clean-orphaned.sql migrate-grp.sh
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff
changeset
|
61 'REPLACE INTO dst.grp SELECT * FROM main.grp WHERE rowid=?', grid) |
4bc9494c00ff
Add clean-orphaned.sql migrate-grp.sh
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff
changeset
|
62 for tbl in %w(grp_s grp_m grp_mem grp_mem_s grp_mem_m |
4bc9494c00ff
Add clean-orphaned.sql migrate-grp.sh
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff
changeset
|
63 grp_adm grp_adm_s grp_adm_m) |
4bc9494c00ff
Add clean-orphaned.sql migrate-grp.sh
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff
changeset
|
64 db.execute( |
4bc9494c00ff
Add clean-orphaned.sql migrate-grp.sh
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff
changeset
|
65 "REPLACE INTO dst.#{tbl} |
4bc9494c00ff
Add clean-orphaned.sql migrate-grp.sh
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff
changeset
|
66 SELECT * FROM main.#{tbl} WHERE gname=?", gname) |
4bc9494c00ff
Add clean-orphaned.sql migrate-grp.sh
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff
changeset
|
67 end |
4bc9494c00ff
Add clean-orphaned.sql migrate-grp.sh
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff
changeset
|
68 ## Copy articles |
4bc9494c00ff
Add clean-orphaned.sql migrate-grp.sh
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff
changeset
|
69 db.execute("SELECT id FROM blog_s WHERE key='owner' AND val=?", |
4bc9494c00ff
Add clean-orphaned.sql migrate-grp.sh
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff
changeset
|
70 gname) do |row| |
4bc9494c00ff
Add clean-orphaned.sql migrate-grp.sh
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff
changeset
|
71 blogid = row[0] |
4bc9494c00ff
Add clean-orphaned.sql migrate-grp.sh
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff
changeset
|
72 for tbl in %w(blog blog_s blog_m) |
4bc9494c00ff
Add clean-orphaned.sql migrate-grp.sh
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff
changeset
|
73 db.execute( |
4bc9494c00ff
Add clean-orphaned.sql migrate-grp.sh
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff
changeset
|
74 "REPLACE INTO dst.#{tbl} |
4bc9494c00ff
Add clean-orphaned.sql migrate-grp.sh
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff
changeset
|
75 SELECT * FROM main.#{tbl} WHERE id=?", blogid) |
4bc9494c00ff
Add clean-orphaned.sql migrate-grp.sh
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff
changeset
|
76 db.execute( |
4bc9494c00ff
Add clean-orphaned.sql migrate-grp.sh
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff
changeset
|
77 "SELECT id FROM article WHERE blogid=?", blogid) do |article| |
4bc9494c00ff
Add clean-orphaned.sql migrate-grp.sh
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff
changeset
|
78 aid = article[0] |
4bc9494c00ff
Add clean-orphaned.sql migrate-grp.sh
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff
changeset
|
79 for atbl in %W(article article_m) |
4bc9494c00ff
Add clean-orphaned.sql migrate-grp.sh
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff
changeset
|
80 db.execute( |
4bc9494c00ff
Add clean-orphaned.sql migrate-grp.sh
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff
changeset
|
81 "REPLACE INTO dst.#{atbl} |
4bc9494c00ff
Add clean-orphaned.sql migrate-grp.sh
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff
changeset
|
82 SELECT * FROM main.#{atbl} WHERE id=?", aid) |
4bc9494c00ff
Add clean-orphaned.sql migrate-grp.sh
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff
changeset
|
83 end |
4bc9494c00ff
Add clean-orphaned.sql migrate-grp.sh
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff
changeset
|
84 db.execute( |
4bc9494c00ff
Add clean-orphaned.sql migrate-grp.sh
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff
changeset
|
85 "SELECT id, type, key, val, bin FROM article_s WHERE id=?", |
4bc9494c00ff
Add clean-orphaned.sql migrate-grp.sh
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff
changeset
|
86 aid) do |a| |
4bc9494c00ff
Add clean-orphaned.sql migrate-grp.sh
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff
changeset
|
87 db.execute("REPLACE INTO dst.article_s VALUES(?, ?, ?, ?, ?)", |
4bc9494c00ff
Add clean-orphaned.sql migrate-grp.sh
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff
changeset
|
88 a[0], a[1], a[2], |
4bc9494c00ff
Add clean-orphaned.sql migrate-grp.sh
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff
changeset
|
89 a[3].gsub(srcurl, dsturl), |
4bc9494c00ff
Add clean-orphaned.sql migrate-grp.sh
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff
changeset
|
90 a[4]) |
4bc9494c00ff
Add clean-orphaned.sql migrate-grp.sh
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff
changeset
|
91 end |
4bc9494c00ff
Add clean-orphaned.sql migrate-grp.sh
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff
changeset
|
92 end |
4bc9494c00ff
Add clean-orphaned.sql migrate-grp.sh
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff
changeset
|
93 end |
4bc9494c00ff
Add clean-orphaned.sql migrate-grp.sh
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff
changeset
|
94 end |
4bc9494c00ff
Add clean-orphaned.sql migrate-grp.sh
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff
changeset
|
95 db.execute("END;"); |
4bc9494c00ff
Add clean-orphaned.sql migrate-grp.sh
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff
changeset
|
96 |
4bc9494c00ff
Add clean-orphaned.sql migrate-grp.sh
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff
changeset
|
97 end |
4bc9494c00ff
Add clean-orphaned.sql migrate-grp.sh
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff
changeset
|
98 puts("Done.") |