.examples
.github
alerting
api
client
config
controller
core
docs
jsonpath
metrics
pattern
security
storage
store
common
memory
sql
specific_postgres.go
specific_sqlite.go
sql.go
sql_test.go
store.go
store_bench_test.go
store_test.go
config.go
type.go
test
testdata
util
watchdog
web
.dockerignore
.gitattributes
.gitignore
Dockerfile
LICENSE
Makefile
README.md
config.yaml
go.mod
go.sum
main.go
This will prevent temporary issues with the parsing of old results that would otherwise have a value of NULL for domain_expiration Fixes an issue introduced by #325
73 lines
2.4 KiB
Go
73 lines
2.4 KiB
Go
package sql
|
|
|
|
func (s *Store) createPostgresSchema() error {
|
|
_, err := s.db.Exec(`
|
|
CREATE TABLE IF NOT EXISTS endpoints (
|
|
endpoint_id BIGSERIAL PRIMARY KEY,
|
|
endpoint_key TEXT UNIQUE,
|
|
endpoint_name TEXT NOT NULL,
|
|
endpoint_group TEXT NOT NULL,
|
|
UNIQUE(endpoint_name, endpoint_group)
|
|
)
|
|
`)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
_, err = s.db.Exec(`
|
|
CREATE TABLE IF NOT EXISTS endpoint_events (
|
|
endpoint_event_id BIGSERIAL PRIMARY KEY,
|
|
endpoint_id INTEGER NOT NULL REFERENCES endpoints(endpoint_id) ON DELETE CASCADE,
|
|
event_type TEXT NOT NULL,
|
|
event_timestamp TIMESTAMP NOT NULL
|
|
)
|
|
`)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
_, err = s.db.Exec(`
|
|
CREATE TABLE IF NOT EXISTS endpoint_results (
|
|
endpoint_result_id BIGSERIAL PRIMARY KEY,
|
|
endpoint_id BIGINT NOT NULL REFERENCES endpoints(endpoint_id) ON DELETE CASCADE,
|
|
success BOOLEAN NOT NULL,
|
|
errors TEXT NOT NULL,
|
|
connected BOOLEAN NOT NULL,
|
|
status BIGINT NOT NULL,
|
|
dns_rcode TEXT NOT NULL,
|
|
certificate_expiration BIGINT NOT NULL,
|
|
domain_expiration BIGINT NOT NULL,
|
|
hostname TEXT NOT NULL,
|
|
ip TEXT NOT NULL,
|
|
duration BIGINT NOT NULL,
|
|
timestamp TIMESTAMP NOT NULL
|
|
)
|
|
`)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
_, err = s.db.Exec(`
|
|
CREATE TABLE IF NOT EXISTS endpoint_result_conditions (
|
|
endpoint_result_condition_id BIGSERIAL PRIMARY KEY,
|
|
endpoint_result_id BIGINT NOT NULL REFERENCES endpoint_results(endpoint_result_id) ON DELETE CASCADE,
|
|
condition TEXT NOT NULL,
|
|
success BOOLEAN NOT NULL
|
|
)
|
|
`)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
_, err = s.db.Exec(`
|
|
CREATE TABLE IF NOT EXISTS endpoint_uptimes (
|
|
endpoint_uptime_id BIGSERIAL PRIMARY KEY,
|
|
endpoint_id BIGINT NOT NULL REFERENCES endpoints(endpoint_id) ON DELETE CASCADE,
|
|
hour_unix_timestamp BIGINT NOT NULL,
|
|
total_executions BIGINT NOT NULL,
|
|
successful_executions BIGINT NOT NULL,
|
|
total_response_time BIGINT NOT NULL,
|
|
UNIQUE(endpoint_id, hour_unix_timestamp)
|
|
)
|
|
`)
|
|
// Silent table modifications
|
|
_, _ = s.db.Exec(`ALTER TABLE endpoint_results ADD IF NOT EXISTS domain_expiration BIGINT NOT NULL DEFAULT 0`)
|
|
return err
|
|
}
|