66 lines
1.5 KiB
Go
66 lines
1.5 KiB
Go
|
package sqlite
|
||
|
|
||
|
import (
|
||
|
"fmt"
|
||
|
|
||
|
"github.com/pkg/errors"
|
||
|
|
||
|
"github.com/jmoiron/sqlx"
|
||
|
)
|
||
|
|
||
|
func InitDB(db *sqlx.DB) error {
|
||
|
var err error
|
||
|
if db == nil {
|
||
|
return fmt.Errorf("invalid db connection")
|
||
|
}
|
||
|
|
||
|
table_schema := `CREATE TABLE IF NOT EXISTS agent_config_versions(
|
||
|
id TEXT PRIMARY KEY,
|
||
|
created_by TEXT,
|
||
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||
|
updated_by TEXT,
|
||
|
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||
|
version INTEGER DEFAULT 1,
|
||
|
active int,
|
||
|
is_valid int,
|
||
|
disabled int,
|
||
|
element_type VARCHAR(120) NOT NULL,
|
||
|
deploy_status VARCHAR(80) NOT NULL DEFAULT 'DIRTY',
|
||
|
deploy_sequence INTEGER,
|
||
|
deploy_result TEXT,
|
||
|
last_hash TEXT,
|
||
|
last_config TEXT,
|
||
|
UNIQUE(element_type, version)
|
||
|
);
|
||
|
|
||
|
|
||
|
CREATE UNIQUE INDEX IF NOT EXISTS agent_config_versions_u1
|
||
|
ON agent_config_versions(element_type, version);
|
||
|
|
||
|
CREATE INDEX IF NOT EXISTS agent_config_versions_nu1
|
||
|
ON agent_config_versions(last_hash);
|
||
|
|
||
|
|
||
|
CREATE TABLE IF NOT EXISTS agent_config_elements(
|
||
|
id TEXT PRIMARY KEY,
|
||
|
created_by TEXT,
|
||
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||
|
updated_by TEXT,
|
||
|
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||
|
element_id TEXT NOT NULL,
|
||
|
element_type VARCHAR(120) NOT NULL,
|
||
|
version_id TEXT NOT NULL
|
||
|
);
|
||
|
|
||
|
CREATE UNIQUE INDEX IF NOT EXISTS agent_config_elements_u1
|
||
|
ON agent_config_elements(version_id, element_id, element_type);
|
||
|
|
||
|
`
|
||
|
|
||
|
_, err = db.Exec(table_schema)
|
||
|
if err != nil {
|
||
|
return errors.Wrap(err, "Error in creating agent config tables")
|
||
|
}
|
||
|
return nil
|
||
|
}
|