· 8 years ago · Jun 05, 2018, 03:00 PM
1// InitDB initializes the database for the backup service.
2func InitDB(db DB) error {
3 _, err := db.Exec("CREATE TABLE IF NOT EXISTS `backup` (\n" +
4 " `id` CHAR(64) NOT NULL PRIMARY KEY,\n" +
5 " `system` TINYINT NOT NULL DEFAULT 0,\n" +
6 " `customer_id` BIGINT NULL,\n" +
7 " `login` VARCHAR(120) NULL,\n" +
8 " `database` VARCHAR(120) NULL,\n" +
9 " `shard` VARCHAR(120) NOT NULL,\n" +
10 " `host` VARCHAR(120) NOT NULL,\n" +
11 " `author` VARCHAR(120) NOT NULL,\n" +
12 " `created` TIMESTAMP NULL,\n" +
13 " `inserted` TIMESTAMP NOT NULL,\n" +
14 " `group_id` BIGINT NULL REFERENCES backup(id),\n" +
15 " `anon_parent_id` CHAR(64) NULL REFERENCES backup(id),\n" +
16 " `secret` CHAR(44) NOT NULL UNIQUE,\n" +
17 " `state` INTEGER NOT NULL DEFAULT 0,\n" +
18 " `public` TINYINT NOT NULL DEFAULT 0\n" +
19 ") ENGINE=InnoDB CHARACTER SET=utf8")
20 if err != nil {
21 return fmt.Errorf("failed to create backup table: %v", err)
22 }
23 _, err = db.Exec("CREATE TABLE IF NOT EXISTS `backup_audit_log` (\n" +
24 " `id` BIGINT NOT NULL AUTO_INCREMENT PRIMARY KEY,\n" +
25 " `time` TIMESTAMP NOT NULL,\n" +
26 " `user` VARCHAR(120) NOT NULL,\n" +
27 " `action` VARCHAR(120) NOT NULL,\n" +
28 " `backup_id` CHAR(64) NULL REFERENCES backup(id),\n" +
29 " `authorized` TINYINT NOT NULL DEFAULT 0\n" +
30 ") ENGINE=InnoDB CHARACTER SET=utf8")
31 if err != nil {
32 return fmt.Errorf("failed to create backup audit log table: %v", err)
33 }
34 _, err = db.Exec("CREATE TABLE IF NOT EXISTS `backup_group` (\n" +
35 " `group_id` BIGINT NOT NULL AUTO_INCREMENT PRIMARY KEY,\n" +
36 " `id` CHAR(64) NOT NULL,\n" +
37 " `shard` VARCHAR(120) NOT NULL,\n" +
38 " `host` VARCHAR(120) NOT NULL,\n" +
39 " `created` TIMESTAMP NULL,\n" +
40 " `inserted` TIMESTAMP NOT NULL,\n" +
41 " `checksum` CHAR(64) NOT NULL\n" +
42 ") ENGINE=InnoDB CHARACTER SET=utf8")
43 if err != nil {
44 return fmt.Errorf("failed to create backup group table: %v", err)
45 }
46 return nil
47}