Adding better support for undeployed instances.

This commit is contained in:
2026-07-24 12:29:22 -07:00
parent d74e913023
commit 1a0252de1a
2 changed files with 299 additions and 219 deletions

View File

@@ -515,37 +515,51 @@ where usa.user_id=$1 and usa.instance_id=$2;"
"select apps.app_name, usa.installed_version, usa.instance_id from user_selected_apps usa
join apps on apps.id=usa.app_id
where user_id=$1;"
user-id))))
(map
(lambda (instance)
(cons `(apps . ,(alist-ref (alist-ref 'instance-id instance) instance-apps))
instance))
user-id)))
(undeployed-res
(query conn
(string-append
"select i.instance_id from instances as i "
"left join deployments d on d.instance_id = i.instance_id "
"where i.user_id=$1 and d.status is null "
"group by d.id, i.instance_id;")
user-id)))
(append
(map
(lambda (row-num)
(map (lambda (item)
(let* ((key (car item))
(value (cdr item))
(config (alist-ref key `((root_domain . root-domain)
(config_enc . config)
(instance_id . instance-id)
;; (wg_easy_version . wg-easy)
;; (nextcloud_version . nextcloud)
;; (ghost_version . ghost)
;; (nassella_version . nassella)
;; (log_viewer_version . log-viewer)
;; (instance_control_version . instance-control)
,@*deployments-reverse-column-map*))))
`(,config . ,(if (sql-null? value)
#f
(if (and (string? value) (member config *deployments-column-map*))
(string->symbol value)
(if (eq? key 'config_enc)
(with-input-from-string
(user-decrypt-from-db value user-key user-iv user-id)
read)
value))))))
(row-alist res row-num)))
(iota (row-count res)))))))
(lambda (instance)
(cons `(apps . ,(alist-ref (alist-ref 'instance-id instance) instance-apps))
instance))
(map
(lambda (row-num)
(cons '(deployed . #t)
(map (lambda (item)
(let* ((key (car item))
(value (cdr item))
(config (alist-ref key `((root_domain . root-domain)
(config_enc . config)
(instance_id . instance-id)
;; (wg_easy_version . wg-easy)
;; (nextcloud_version . nextcloud)
;; (ghost_version . ghost)
;; (nassella_version . nassella)
;; (log_viewer_version . log-viewer)
;; (instance_control_version . instance-control)
,@*deployments-reverse-column-map*))))
`(,config . ,(if (sql-null? value)
#f
(if (and (string? value) (member config *deployments-column-map*))
(string->symbol value)
(if (eq? key 'config_enc)
(with-input-from-string
(user-decrypt-from-db value user-key user-iv user-id)
read)
value))))))
(row-alist res row-num))))
(iota (row-count res))))
(map (lambda (id) `((instance-id . ,id) (deployed . #f)))
(if (> (row-count undeployed-res) 0)
(row-values undeployed-res)
'()))))))
(define (update-user-terraform-state conn user-id instance-id state backup)
(receive (user-key user-iv auth-user-id)