From ca8857578268de0eeadc5a554cbf1182dd29d3af Mon Sep 17 00:00:00 2001 From: Michael Quigley Date: Fri, 30 May 2025 14:10:54 -0400 Subject: [PATCH] agent enrollment store implementation (#967) --- controller/store/agentEnrollment.go | 32 +++++++++++++++++++ .../033_v1_0_5_agent_enrollments.sql | 14 ++++++++ .../sqlite3/033_v1_0_5_agent_enrollments.sql | 14 ++++++++ 3 files changed, 60 insertions(+) create mode 100644 controller/store/agentEnrollment.go create mode 100644 controller/store/sql/postgresql/033_v1_0_5_agent_enrollments.sql create mode 100644 controller/store/sql/sqlite3/033_v1_0_5_agent_enrollments.sql diff --git a/controller/store/agentEnrollment.go b/controller/store/agentEnrollment.go new file mode 100644 index 00000000..99d5ce22 --- /dev/null +++ b/controller/store/agentEnrollment.go @@ -0,0 +1,32 @@ +package store + +import ( + "github.com/jmoiron/sqlx" + "github.com/pkg/errors" +) + +type AgentEnrollment struct { + Model + EnvironmentId int + Token string +} + +func (str *Store) CreateAgentEnrollment(envId int, token string, trx *sqlx.Tx) (int, error) { + stmt, err := trx.Prepare("insert into agent_enrollments (environment_id, token) values ($1, $2) returing id") + if err != nil { + return 0, errors.Wrap(err, "error preparing agent enrollments insert statement") + } + var id int + if err := stmt.QueryRow(envId, token).Scan(&id); err != nil { + return 0, errors.Wrap(err, "error executing agent enrollments insert statement") + } + return id, nil +} + +func (str *Store) FindAgentEnrollmentForEnvironment(envId int, trx *sqlx.Tx) (*AgentEnrollment, error) { + ae := &AgentEnrollment{} + if err := trx.QueryRowx("select * from agent_enrollments where environment_id = $1", envId).StructScan(ae); err != nil { + return nil, errors.Wrap(err, "error finding agent enrollment") + } + return ae, nil +} diff --git a/controller/store/sql/postgresql/033_v1_0_5_agent_enrollments.sql b/controller/store/sql/postgresql/033_v1_0_5_agent_enrollments.sql new file mode 100644 index 00000000..73f7b639 --- /dev/null +++ b/controller/store/sql/postgresql/033_v1_0_5_agent_enrollments.sql @@ -0,0 +1,14 @@ +-- +migrate Up + +create table agent_enrollments ( + id serial primary key, + + environment_id integer not null references environments(id), + token varchar(32) not null unique, + + created_at timestamptz not null default(current_timestamp), + updated_at timestamptz not null default(current_timestamp), + deleted boolean not null default(false) +); + +create index agent_enrollments_environment_id_idx on agent_enrollments(environment_id); \ No newline at end of file diff --git a/controller/store/sql/sqlite3/033_v1_0_5_agent_enrollments.sql b/controller/store/sql/sqlite3/033_v1_0_5_agent_enrollments.sql new file mode 100644 index 00000000..7b32e352 --- /dev/null +++ b/controller/store/sql/sqlite3/033_v1_0_5_agent_enrollments.sql @@ -0,0 +1,14 @@ +-- +migrate Up + +create table agent_enrollments ( + id integer primary key, + + environment_id integer not null references environments(id), + token varchar(32) not null unique, + + created_at datetime not null default(strftime('%Y-%m-%d %H:%M:%f', 'now')), + updated_at datetime not null default(strftime('%Y-%m-%d %H:%M:%f', 'now')), + deleted boolean not null default(false) +); + +create index agent_enrollments_environment_id_idx on agent_enrollments(environment_id); \ No newline at end of file