From 827305afdbc70d1e9f882d0b9de1b2a723f51b5d Mon Sep 17 00:00:00 2001 From: Ansuman Satapathy Date: Thu, 26 Sep 2024 08:27:34 +0000 Subject: [PATCH] feat: [CDE-336]: update heartbeat for gitspace instance (#2742) * feat: [CDE-336]: update heartbeat for gitspace instance * feat: [CDE-336]: update heartbeat for gitspace instance * feat: [CDE-336]: update heartbeat for gitspace instance * feat: [CDE-336]: update heartbeat for gitspace instance * feat: [CDE-336]: update heartbeat for gitspace instance * feat: [CDE-336]: update heartbeat for gitspace instance * feat: [CDE-336]: update heartbeat for gitspace instance --- .../orchestrator/orchestrator_impl.go | 3 ++- app/store/database/gitspace_instance.go | 19 ++++++++++++------- ...r_gitspace_instance_add_heartbeat.down.sql | 1 + ...ter_gitspace_instance_add_heartbeat.up.sql | 2 ++ ...r_gitspace_instance_add_heartbeat.down.sql | 1 + ...ter_gitspace_instance_add_heartbeat.up.sql | 3 +++ types/gitspace.go | 3 ++- 7 files changed, 23 insertions(+), 9 deletions(-) create mode 100644 app/store/database/migrate/postgres/0077_alter_gitspace_instance_add_heartbeat.down.sql create mode 100644 app/store/database/migrate/postgres/0077_alter_gitspace_instance_add_heartbeat.up.sql create mode 100644 app/store/database/migrate/sqlite/0077_alter_gitspace_instance_add_heartbeat.down.sql create mode 100644 app/store/database/migrate/sqlite/0077_alter_gitspace_instance_add_heartbeat.up.sql diff --git a/app/gitspace/orchestrator/orchestrator_impl.go b/app/gitspace/orchestrator/orchestrator_impl.go index 640ca96ed..763c30f98 100644 --- a/app/gitspace/orchestrator/orchestrator_impl.go +++ b/app/gitspace/orchestrator/orchestrator_impl.go @@ -400,7 +400,8 @@ func (o orchestrator) ResumeStartGitspace( ideURLString := ideURL.String() gitspaceInstance.URL = &ideURLString - gitspaceInstance.LastUsed = time.Now().UnixMilli() + lastUsed := time.Now().UnixMilli() + gitspaceInstance.LastUsed = &lastUsed gitspaceInstance.State = enum.GitspaceInstanceStateRunning o.emitGitspaceEvent(ctx, gitspaceConfig, enum.GitspaceEventTypeGitspaceActionStartCompleted) diff --git a/app/store/database/gitspace_instance.go b/app/store/database/gitspace_instance.go index aeb1f1d3c..0c6520355 100644 --- a/app/store/database/gitspace_instance.go +++ b/app/store/database/gitspace_instance.go @@ -49,7 +49,8 @@ const ( gits_access_type, gits_machine_user, gits_uid, - gits_access_key_ref` + gits_access_key_ref, + gits_last_heartbeat` gitspaceInstanceSelectColumns = "gits_id," + gitspaceInstanceInsertColumns gitspaceInstanceTable = `gitspaces` ) @@ -63,7 +64,7 @@ type gitspaceInstance struct { UserUID string `db:"gits_user_uid"` ResourceUsage null.String `db:"gits_resource_usage"` SpaceID int64 `db:"gits_space_id"` - LastUsed int64 `db:"gits_last_used"` + LastUsed null.Int `db:"gits_last_used"` TotalTimeUsed int64 `db:"gits_total_time_used"` TrackedChanges null.String `db:"gits_tracked_changes"` AccessType enum.GitspaceAccessType `db:"gits_access_type"` @@ -72,6 +73,7 @@ type gitspaceInstance struct { Identifier string `db:"gits_uid"` Created int64 `db:"gits_created"` Updated int64 `db:"gits_updated"` + LastHeartbeat null.Int `db:"gits_last_heartbeat"` } // NewGitspaceInstanceStore returns a new GitspaceInstanceStore. @@ -89,7 +91,7 @@ func (g gitspaceInstanceStore) Find(ctx context.Context, id int64) (*types.Gitsp stmt := database.Builder. Select(gitspaceInstanceSelectColumns). From(gitspaceInstanceTable). - Where("gits_id = $1", id) + Where("gits_id = ?", id) sql, args, err := stmt.ToSql() if err != nil { @@ -110,7 +112,7 @@ func (g gitspaceInstanceStore) FindByIdentifier( stmt := database.Builder. Select(gitspaceInstanceSelectColumns). From(gitspaceInstanceTable). - Where("gits_uid = $1", identifier) + Where("gits_uid = ?", identifier) sql, args, err := stmt.ToSql() if err != nil { @@ -144,6 +146,7 @@ func (g gitspaceInstanceStore) Create(ctx context.Context, gitspaceInstance *typ gitspaceInstance.MachineUser, gitspaceInstance.Identifier, gitspaceInstance.AccessKeyRef, + gitspaceInstance.LastHeartbeat, ). Suffix(ReturningClause + "gits_id") sql, args, err := stmt.ToSql() @@ -166,9 +169,10 @@ func (g gitspaceInstanceStore) Update( Update(gitspaceInstanceTable). Set("gits_state", gitspaceInstance.State). Set("gits_last_used", gitspaceInstance.LastUsed). + Set("gits_last_heartbeat", gitspaceInstance.LastHeartbeat). Set("gits_url", gitspaceInstance.URL). Set("gits_updated", gitspaceInstance.Updated). - Where("gits_id = $5", gitspaceInstance.ID) + Where("gits_id = ?", gitspaceInstance.ID) sql, args, err := stmt.ToSql() if err != nil { return errors.Wrap(err, "Failed to convert squirrel builder to sql") @@ -188,7 +192,7 @@ func (g gitspaceInstanceStore) FindLatestByGitspaceConfigID( stmt := database.Builder. Select(gitspaceInstanceSelectColumns). From(gitspaceInstanceTable). - Where("gits_gitspace_config_id = $1", gitspaceConfigID). + Where("gits_gitspace_config_id = ?", gitspaceConfigID). OrderBy("gits_created DESC") sql, args, err := stmt.ToSql() @@ -272,7 +276,7 @@ func (g gitspaceInstanceStore) mapToGitspaceInstance( State: in.State, UserID: in.UserUID, ResourceUsage: in.ResourceUsage.Ptr(), - LastUsed: in.LastUsed, + LastUsed: in.LastUsed.Ptr(), TotalTimeUsed: in.TotalTimeUsed, TrackedChanges: in.TrackedChanges.Ptr(), AccessType: in.AccessType, @@ -281,6 +285,7 @@ func (g gitspaceInstanceStore) mapToGitspaceInstance( SpaceID: in.SpaceID, Created: in.Created, Updated: in.Updated, + LastHeartbeat: in.LastHeartbeat.Ptr(), } return res, nil } diff --git a/app/store/database/migrate/postgres/0077_alter_gitspace_instance_add_heartbeat.down.sql b/app/store/database/migrate/postgres/0077_alter_gitspace_instance_add_heartbeat.down.sql new file mode 100644 index 000000000..7d50549bf --- /dev/null +++ b/app/store/database/migrate/postgres/0077_alter_gitspace_instance_add_heartbeat.down.sql @@ -0,0 +1 @@ +ALTER TABLE gitspaces DROP COLUMN gits_last_heartbeat; diff --git a/app/store/database/migrate/postgres/0077_alter_gitspace_instance_add_heartbeat.up.sql b/app/store/database/migrate/postgres/0077_alter_gitspace_instance_add_heartbeat.up.sql new file mode 100644 index 000000000..e79324f79 --- /dev/null +++ b/app/store/database/migrate/postgres/0077_alter_gitspace_instance_add_heartbeat.up.sql @@ -0,0 +1,2 @@ +ALTER TABLE gitspaces ADD COLUMN gits_last_heartbeat BIGINT; +ALTER TABLE gitspaces ALTER COLUMN gits_last_used DROP NOT NULL; diff --git a/app/store/database/migrate/sqlite/0077_alter_gitspace_instance_add_heartbeat.down.sql b/app/store/database/migrate/sqlite/0077_alter_gitspace_instance_add_heartbeat.down.sql new file mode 100644 index 000000000..3102ade9f --- /dev/null +++ b/app/store/database/migrate/sqlite/0077_alter_gitspace_instance_add_heartbeat.down.sql @@ -0,0 +1 @@ +ALTER TABLE gitspaces DROP COLUMN gits_last_heartbeat; \ No newline at end of file diff --git a/app/store/database/migrate/sqlite/0077_alter_gitspace_instance_add_heartbeat.up.sql b/app/store/database/migrate/sqlite/0077_alter_gitspace_instance_add_heartbeat.up.sql new file mode 100644 index 000000000..624b7762b --- /dev/null +++ b/app/store/database/migrate/sqlite/0077_alter_gitspace_instance_add_heartbeat.up.sql @@ -0,0 +1,3 @@ +ALTER TABLE gitspaces ADD COLUMN gits_last_heartbeat BIGINT; +ALTER TABLE gitspaces DROP COLUMN gits_last_used; +ALTER TABLE gitspaces ADD COLUMN gits_last_used int64 NULL; \ No newline at end of file diff --git a/types/gitspace.go b/types/gitspace.go index dc1d6a42a..7e5dad27c 100644 --- a/types/gitspace.go +++ b/types/gitspace.go @@ -62,7 +62,7 @@ type GitspaceInstance struct { State enum.GitspaceInstanceStateType `json:"state"` UserID string `json:"-"` ResourceUsage *string `json:"resource_usage"` - LastUsed int64 `json:"last_used,omitempty"` + LastUsed *int64 `json:"last_used,omitempty"` TotalTimeUsed int64 `json:"total_time_used"` TrackedChanges *string `json:"tracked_changes"` AccessKey *string `json:"access_key,omitempty"` @@ -73,6 +73,7 @@ type GitspaceInstance struct { SpaceID int64 `json:"-"` Created int64 `json:"created"` Updated int64 `json:"updated"` + LastHeartbeat *int64 `json:"last_heartbeat,omitempty"` } type GitspaceFilter struct {