11import type { stacks_config } from "~/typings/database" ;
2- import type { Stack } from "~/typings/docker-compose" ;
32import { findObjectByKey } from "../utils/helpers" ;
43import { db } from "./database" ;
54import { executeDbOperation } from "./helper" ;
65
76const stmt = {
87 insert : db . prepare ( `
98 INSERT INTO stacks_config (
10- name, version, custom, source, compose_spec
11- ) VALUES (?, ?, ?, ?, ?)
9+ name, version, custom, source, compose_spec, status
10+ ) VALUES (?, ?, ?, ?, ?, ? )
1211 ` ) ,
1312 selectAll : db . prepare ( `
14- SELECT id, name, version, custom, source, compose_spec
13+ SELECT id, name, version, custom, source, compose_spec, status
1514 FROM stacks_config
16- ORDER BY name DESC
15+ ORDER BY id DESC
1716 ` ) ,
1817 update : db . prepare ( `
1918 UPDATE stacks_config
2019 SET name = ?, custom = ?, source = ?, compose_spec = ?
21- WHERE name = ?
20+ WHERE id = ?
2221 ` ) ,
22+ setStatus : db . prepare ( `
23+ UPDATE stacks_config
24+ SET status = ?
25+ WHERE id = ?
26+ ` ) ,
2327 delete : db . prepare ( "DELETE FROM stacks_config WHERE id = ?" ) ,
2428} ;
2529
@@ -31,6 +35,7 @@ export function addStack(stack: stacks_config) {
3135 stack . custom ,
3236 stack . source ,
3337 stack . compose_spec ,
38+ "active" ,
3439 ) ,
3540 ) ;
3641
@@ -40,7 +45,7 @@ export function addStack(stack: stacks_config) {
4045export function getStacks ( ) {
4146 return executeDbOperation ( "Get Stacks" , ( ) =>
4247 stmt . selectAll . all ( ) ,
43- ) as Stack [ ] ;
48+ ) as stacks_config [ ] ;
4449}
4550
4651export function deleteStack ( id : number ) {
@@ -54,13 +59,27 @@ export function deleteStack(id: number) {
5459}
5560
5661export function updateStack ( stack : stacks_config ) {
57- return executeDbOperation ( "Update Stack" , ( ) =>
62+ return executeDbOperation ( "Update Stack" , ( ) => {
63+ if ( ! stack . id ) {
64+ throw new Error ( "Stack ID needed" ) ;
65+ }
5866 stmt . update . run (
67+ stack . id ,
5968 stack . version ,
6069 stack . custom ,
6170 stack . source ,
6271 stack . name ,
6372 stack . compose_spec ,
64- ) ,
65- ) ;
73+ ) ;
74+ } ) ;
75+ }
76+
77+ export function setStackStatus (
78+ stack : stacks_config ,
79+ status : "active" | "error" = "active" ,
80+ ) {
81+ if ( ! stack . id ) {
82+ throw new Error ( "Stack ID needed" ) ;
83+ }
84+ stmt . setStatus . run ( status , stack . id ) ;
6685}
0 commit comments