Add runtime restore and temp asset cleanup
This commit is contained in:
@@ -7,6 +7,8 @@ import (
|
||||
"strconv"
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
"github.com/jackc/pgx/v5"
|
||||
)
|
||||
|
||||
type RateLimitMetricStatus struct {
|
||||
@@ -82,6 +84,59 @@ type PlatformPolicyEvent struct {
|
||||
CreatedAt time.Time `json:"createdAt"`
|
||||
}
|
||||
|
||||
func (s *Store) RestorePlatformModelRuntimeStatus(ctx context.Context, platformModelID string) (ModelRateLimitStatus, error) {
|
||||
platformModelID = strings.TrimSpace(platformModelID)
|
||||
if platformModelID == "" {
|
||||
return ModelRateLimitStatus{}, pgx.ErrNoRows
|
||||
}
|
||||
|
||||
tx, err := s.pool.Begin(ctx)
|
||||
if err != nil {
|
||||
return ModelRateLimitStatus{}, err
|
||||
}
|
||||
defer tx.Rollback(ctx)
|
||||
|
||||
var restoredModelID string
|
||||
if err := tx.QueryRow(ctx, `
|
||||
WITH restored_model AS (
|
||||
UPDATE platform_models
|
||||
SET enabled = true,
|
||||
cooldown_until = NULL,
|
||||
updated_at = now()
|
||||
WHERE id = $1::uuid
|
||||
RETURNING id::text, platform_id
|
||||
),
|
||||
restored_platform AS (
|
||||
UPDATE integration_platforms
|
||||
SET status = 'enabled',
|
||||
disabled_reason = NULL,
|
||||
cooldown_until = NULL,
|
||||
updated_at = now()
|
||||
WHERE id = (SELECT platform_id FROM restored_model)
|
||||
AND deleted_at IS NULL
|
||||
RETURNING id
|
||||
)
|
||||
SELECT id
|
||||
FROM restored_model
|
||||
WHERE EXISTS (SELECT 1 FROM restored_platform)`, platformModelID).Scan(&restoredModelID); err != nil {
|
||||
return ModelRateLimitStatus{}, err
|
||||
}
|
||||
if err := tx.Commit(ctx); err != nil {
|
||||
return ModelRateLimitStatus{}, err
|
||||
}
|
||||
|
||||
items, err := s.ListModelRateLimitStatuses(ctx)
|
||||
if err != nil {
|
||||
return ModelRateLimitStatus{}, err
|
||||
}
|
||||
for _, item := range items {
|
||||
if item.PlatformModelID == restoredModelID {
|
||||
return item, nil
|
||||
}
|
||||
}
|
||||
return ModelRateLimitStatus{}, pgx.ErrNoRows
|
||||
}
|
||||
|
||||
func (s *Store) ListModelRateLimitStatuses(ctx context.Context) ([]ModelRateLimitStatus, error) {
|
||||
rows, err := s.pool.Query(ctx, `
|
||||
SELECT m.id::text, m.platform_id::text, p.name, p.provider, p.status,
|
||||
|
||||
Reference in New Issue
Block a user