2025-01-20 17:45:33 +05:30
package sqlmigration
2025-01-17 16:52:55 +05:30
import (
"context"
"github.com/uptrace/bun"
"github.com/uptrace/bun/migrate"
"go.signoz.io/signoz/pkg/factory"
)
type addAgents struct { }
2025-01-20 17:45:33 +05:30
func NewAddAgentsFactory ( ) factory . ProviderFactory [ SQLMigration , Config ] {
2025-01-17 16:52:55 +05:30
return factory . NewProviderFactory ( factory . MustNewName ( "add_agents" ) , newAddAgents )
}
2025-01-20 17:45:33 +05:30
func newAddAgents ( _ context . Context , _ factory . ProviderSettings , _ Config ) ( SQLMigration , error ) {
2025-01-17 16:52:55 +05:30
return & addAgents { } , nil
}
func ( migration * addAgents ) Register ( migrations * migrate . Migrations ) error {
if err := migrations . Register ( migration . Up , migration . Down ) ; err != nil {
return err
}
return nil
}
func ( migration * addAgents ) Up ( ctx context . Context , db * bun . DB ) error {
if _ , err := db . ExecContext ( ctx , ` CREATE TABLE IF NOT EXISTS agents (
agent_id TEXT PRIMARY KEY UNIQUE ,
started_at datetime NOT NULL ,
terminated_at datetime ,
current_status TEXT NOT NULL ,
effective_config TEXT NOT NULL
) ; ` ) ; err != nil {
return err
}
if _ , err := db . ExecContext ( ctx , ` 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 )
) ; ` ) ; err != nil {
return err
}
if _ , err := db . ExecContext ( ctx , ` CREATE UNIQUE INDEX IF NOT EXISTS agent_config_versions_u1 ON agent_config_versions(element_type, version); ` ) ; err != nil {
return err
}
if _ , err := db . ExecContext ( ctx , ` CREATE INDEX IF NOT EXISTS agent_config_versions_nu1 ON agent_config_versions(last_hash); ` ) ; err != nil {
return err
}
if _ , err := db . ExecContext ( ctx , ` 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
) ; ` ) ; err != nil {
return err
}
if _ , err := db . ExecContext ( ctx , ` CREATE UNIQUE INDEX IF NOT EXISTS agent_config_elements_u1 ON agent_config_elements(version_id, element_id, element_type); ` ) ; err != nil {
return err
}
return nil
}
func ( migration * addAgents ) Down ( ctx context . Context , db * bun . DB ) error {
return nil
}