]> pd.if.org Git - zpackage/blob - zpm-sequence
let newpackage set additional fields
[zpackage] / zpm-sequence
1 #!/bin/sh
2
3 set -e
4
5 ZPMSPOOL=${ZPMSPOOL:-/var/lib/admin/notes}
6 DB=$ZPMSPOOL/.sequence.db
7 SQL="zpm shell -bail $DB"
8
9 #rm -f $DB
10 test -f $DB || {
11 zpm shell $DB <<EOS
12 create table sequence ( sequence text not null primary key, val integer not null default 0);
13 insert into sequence (sequence) values ('default');
14 EOS
15 }
16
17 # -c create named sequence
18 # -d delete named sequence
19 # -v current value
20 # -l list all
21 # -s set value
22 # -n next (optional)
23 # -p prepare db, but do nothing
24 case $1 in
25         -c)
26                 $SQL "insert into sequence (sequence) values ('${2:-default}')"
27                 exit 0
28                 ;;
29         -d)
30                 $SQL "delete from sequence where sequence = '${2:-default}'"
31                 exit 0
32                 ;;
33         -v)
34                 val=$($SQL "select val from sequence where sequence = '${2:-default}'")
35                 echo $val
36                 exit 0
37                 ;;
38         -l)
39                 $SQL 'select * from sequence'
40                 exit 0
41                 ;;
42         -s)
43                 $SQL "begin;update sequence set val = $2 where sequence = '${3:-default}'; commit;"
44                 exit 0
45                 ;;
46         -n)
47                 shift
48                 ;;
49         -p)
50                 exit 0
51                 ;;
52 esac
53
54 seq=${1:-default}
55
56 num=$(zpm shell $DB "begin; update sequence set val = val + 1 where sequence = '$seq'; commit;select val from sequence where sequence = '$seq';")
57
58 echo $num