Add runtime restore and temp asset cleanup

This commit is contained in:
2026-06-05 20:28:26 +08:00
parent 644a6f9d17
commit d41d9482c7
22 changed files with 1837 additions and 50 deletions
@@ -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,