-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathdb-init.raku
94 lines (70 loc) · 1.93 KB
/
db-init.raku
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
use v6;
use DBIish;
use Data::Dump;
use Sparky;
sub MAIN (
Str :$root = %*ENV<HOME> ~ '/.sparky/projects',
)
{
mkdir $root;
my %conf = get-sparky-conf();
my $dbh;
my $engine;
my $db-name;
say "config: " ~ Dump(%conf);
if %conf<database> && %conf<database><engine> && %conf<database><engine> !~~ / :i sqlite / {
$engine = %conf<database><engine>;
$db-name = %conf<database><name>;
$dbh = DBIish.connect(
$engine,
host => %conf<database><host>,
port => %conf<database><port>,
database => %conf<database><name>,
user => %conf<database><user>,
password => %conf<database><pass>,
);
} else {
$engine = 'SQLite';
$db-name = "$root/db.sqlite3";
$dbh = DBIish.connect("SQLite", database => $db-name );
}
$dbh.do(q:to/STATEMENT/);
DROP TABLE IF EXISTS builds
STATEMENT
if $engine ~~ /:i sqlite/ {
$dbh.do(q:to/STATEMENT/);
CREATE TABLE builds (
id INTEGER PRIMARY KEY AUTOINCREMENT,
project varchar(255),
job_id varchar(255),
description TEXT,
state int,
dt datetime default current_timestamp
)
STATEMENT
} elsif $engine ~~ /:i mysql/ {
$dbh.do(q:to/STATEMENT/);
CREATE TABLE builds (
id int primary key auto_increment,
project varchar(255),
job_id varchar(255),
description varchar(255),
state int,
dt timestamp default CURRENT_TIMESTAMP
) CHARACTER SET utf8
STATEMENT
} elsif $engine ~~ /:i pg/ {
$dbh.do(q:to/STATEMENT/);
CREATE TABLE builds (
id SERIAL PRIMARY KEY,
project varchar(255),
job_id varchar(255),
description varchar(255),
state int,
dt timestamp default CURRENT_TIMESTAMP
)
STATEMENT
}
say "$engine db populated as $db-name";
$dbh.dispose;
}