Properly manage deploys via unique folders and db.
This commit is contained in:
45
src/db.scm
45
src/db.scm
@@ -14,6 +14,7 @@
|
||||
update-deployment-status get-deployment-status
|
||||
get-most-recent-deployment-status
|
||||
update-deployment-in-progress
|
||||
update-user-terraform-state get-user-terraform-state
|
||||
)
|
||||
|
||||
(import scheme
|
||||
@@ -140,7 +141,8 @@ returning users.user_id;"
|
||||
user-iv))))
|
||||
(query conn "insert into user_service_configs(user_id) values ($1);" user-id)
|
||||
(query conn "insert into user_selected_apps(user_id) values ($1);" user-id)
|
||||
(query conn "insert into user_app_configs(user_id) values ($1);" user-id)))))
|
||||
(query conn "insert into user_app_configs(user_id) values ($1);" user-id)
|
||||
(query conn "insert into user_terraform_state(user_id) values ($1);" user-id)))))
|
||||
|
||||
(define *user-service-configs-column-map*
|
||||
'((cloudflare-api-token . ("cloudflare_api_token_enc" #t))
|
||||
@@ -299,16 +301,20 @@ returning users.user_id;"
|
||||
(define (create-deployment conn user-id)
|
||||
(value-at
|
||||
(query conn
|
||||
"insert into deployments(user_id) values($1) returning deployments.id;"
|
||||
"insert into deployments(user_id, started) values($1, now()) returning deployments.id;"
|
||||
user-id)))
|
||||
(define (update-deployment-in-progress conn deployment-id pid)
|
||||
(query conn
|
||||
"update deployments set status=$1, pid=$2 where id=$3;"
|
||||
(alist-ref 'in-progress *deployment-status*) pid deployment-id))
|
||||
|
||||
(define (update-deployment-status conn deployment-id status)
|
||||
(query conn "update deployments set status=$1 where id=$2;"
|
||||
(alist-ref status *deployment-status*) deployment-id))
|
||||
(define (update-deployment-status conn user-id deployment-id status log)
|
||||
(receive (user-key user-iv auth-user-id)
|
||||
(get-decrypted-user-key-and-iv conn user-id)
|
||||
(query conn "update deployments set status=$1, log_enc=$2, finished=now() where id=$3;"
|
||||
(alist-ref status *deployment-status*)
|
||||
(user-encrypt-for-db log user-key user-iv user-id)
|
||||
deployment-id)))
|
||||
|
||||
(define (get-deployment-status conn deployment-id)
|
||||
(value-at (query conn "select status from deployments where id=$1;" deployment-id)))
|
||||
@@ -316,6 +322,35 @@ returning users.user_id;"
|
||||
(define (get-most-recent-deployment-status conn user-id)
|
||||
(value-at (query conn "select status from deployments where user_id=$1 order by id DESC limit 1;" user-id)))
|
||||
|
||||
(define (update-user-terraform-state conn user-id state backup)
|
||||
(receive (user-key user-iv auth-user-id)
|
||||
(get-decrypted-user-key-and-iv conn user-id)
|
||||
(query conn
|
||||
"update user_terraform_state set state_enc=$1, state_backup_enc=$2 where user_id=$3;"
|
||||
(user-encrypt-for-db state user-key user-iv user-id)
|
||||
(user-encrypt-for-db backup user-key user-iv user-id)
|
||||
user-id)))
|
||||
|
||||
(define (get-user-terraform-state conn user-id)
|
||||
(receive (user-key user-iv auth-user-id)
|
||||
(get-decrypted-user-key-and-iv conn user-id)
|
||||
(let ((res (row-alist (query conn
|
||||
"select state_enc, state_backup_enc from user_terraform_state where user_id=$1;"
|
||||
user-id))))
|
||||
`((state . ,(if (sql-null? (alist-ref 'config_enc res))
|
||||
""
|
||||
(user-decrypt-from-db (alist-ref 'state_enc res) user-key user-iv user-id)))
|
||||
(backup . ,(if (sql-null? (alist-ref 'config_enc res))
|
||||
""
|
||||
(user-decrypt-from-db (alist-ref 'state_backup_enc res) user-key user-iv user-id)))))))
|
||||
|
||||
;; (with-db/transaction
|
||||
;; (lambda (db)
|
||||
;; (update-user-terraform-state db 7
|
||||
;; (with-input-from-file "src/deploy-bak/terraform.tfstate" read-string)
|
||||
;; (with-input-from-file "src/deploy-bak/terraform.tfstate.backup" read-string))))
|
||||
;; (with-db/transaction (lambda (db) (get-user-terraform-state db 7)))
|
||||
|
||||
;; (with-db/transaction (lambda (db) (create-deployment db 7)))
|
||||
;; (with-db/transaction (lambda (db) (get-deployment-status db 1)))
|
||||
;; (with-db/transaction (lambda (db) (update-deployment-in-progress db 1 123)))
|
||||
|
||||
Reference in New Issue
Block a user