@@ -17,7 +17,7 @@ export const GET: RequestHandler = async ({ platform, cookies, request }) => {
1717 return json ( { error : 'Rate limit exceeded' } , { status : 429 , headers : { 'Retry-After' : String ( Math . ceil ( rl . retryAfter ! / 1000 ) ) } } ) ;
1818 }
1919
20- const { results } = await env . DB . prepare ( 'SELECT id, slug, name, description, base_preset, is_public , alias, updated_at, snapshot, snapshot_at FROM configs WHERE user_id = ? ORDER BY updated_at DESC' )
20+ const { results } = await env . DB . prepare ( 'SELECT id, slug, name, description, base_preset, visibility , alias, updated_at, snapshot, snapshot_at FROM configs WHERE user_id = ? ORDER BY updated_at DESC' )
2121 . bind ( user . id )
2222 . all ( ) ;
2323
@@ -43,7 +43,11 @@ export const POST: RequestHandler = async ({ platform, cookies, request }) => {
4343 return json ( { error : 'Invalid request body' } , { status : 400 } ) ;
4444 }
4545
46- const { name, description, base_preset, packages, custom_script, is_public, alias, dotfiles_repo, snapshot, snapshot_at } = body ;
46+ const { name, description, base_preset, packages, custom_script, visibility, alias, dotfiles_repo, snapshot, snapshot_at } = body ;
47+
48+ if ( visibility !== undefined && ! [ 'public' , 'unlisted' , 'private' ] . includes ( visibility ) ) {
49+ return json ( { error : 'Invalid visibility. Must be public, unlisted, or private' } , { status : 400 } ) ;
50+ }
4751
4852 const rlKeyW = getRateLimitKey ( 'config-write' , user . id ) ;
4953 const rlW = checkRateLimit ( rlKeyW , RATE_LIMITS . CONFIG_WRITE ) ;
@@ -92,11 +96,11 @@ export const POST: RequestHandler = async ({ platform, cookies, request }) => {
9296 try {
9397 await env . DB . prepare (
9498 `
95- INSERT INTO configs (id, user_id, slug, name, description, base_preset, packages, custom_script, is_public , alias, dotfiles_repo, snapshot, snapshot_at)
99+ INSERT INTO configs (id, user_id, slug, name, description, base_preset, packages, custom_script, visibility , alias, dotfiles_repo, snapshot, snapshot_at)
96100 VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
97101 `
98102 )
99- . bind ( id , user . id , slug , name , description || '' , base_preset || 'developer' , JSON . stringify ( packages || [ ] ) , custom_script || '' , is_public !== false ? 1 : 0 , cleanAlias , dotfiles_repo || '' , snapshot ? JSON . stringify ( snapshot ) : null , snapshot_at || null )
103+ . bind ( id , user . id , slug , name , description || '' , base_preset || 'developer' , JSON . stringify ( packages || [ ] ) , custom_script || '' , visibility || 'unlisted' , cleanAlias , dotfiles_repo || '' , snapshot ? JSON . stringify ( snapshot ) : null , snapshot_at || null )
100104 . run ( ) ;
101105 } catch ( e ) {
102106 console . error ( 'POST /api/configs error:' , e ) ;
0 commit comments