File tree Expand file tree Collapse file tree 6 files changed +65
-17
lines changed
Expand file tree Collapse file tree 6 files changed +65
-17
lines changed Original file line number Diff line number Diff line change 11/// <reference types="@sveltejs/kit" />
22
33type Todo = {
4+ uid : string ;
45 created_at : Date ;
56 text : string ;
67 done : boolean ;
Original file line number Diff line number Diff line change 1+ import type { Handle } from "@sveltejs/kit" ;
2+
3+ export const handle : Handle = async ( { request, resolve } ) => {
4+ if ( request . query . has ( "_method" ) ) {
5+ request . method = request . query . get ( "_method" ) . toUpperCase ( ) ;
6+ }
7+
8+ const response = await resolve ( request ) ;
9+ return response ;
10+ } ;
Original file line number Diff line number Diff line change 9393 <button aria-label =" Save todo" class =" save" ></button >
9494 </form >
9595
96- <form action =" " method =" " >
96+ <form action ="/todos/ { todo . uid } .json?_method=delete " method =" post " >
9797 <button aria-label =" Delete todo" class =" delete" ></button >
9898 </form >
9999</div >
Original file line number Diff line number Diff line change 1+ import type { RequestHandler } from "@sveltejs/kit" ;
2+ import { api } from "./_api" ;
3+
4+ export const del : RequestHandler = ( request ) => {
5+ return api ( request ) ;
6+ }
Original file line number Diff line number Diff line change 1+ import type { Request } from "@sveltejs/kit" ;
2+
3+ // TODO: Persist in database
4+ let todos : Todo [ ] = [ ] ;
5+
6+ export const api = ( request : Request , todo ?: Todo ) => {
7+ let body = { } ;
8+ let status = 500 ;
9+
10+ switch ( request . method . toUpperCase ( ) ) {
11+ case "GET" :
12+ body = todos ;
13+ status = 200 ;
14+ break ;
15+ case "POST" :
16+ todos . push ( todo ) ;
17+ body = todo ;
18+ status = 201 ;
19+ break ;
20+ case "DELETE" :
21+ todos = todos . filter ( todo => todo . uid !== request . params . uid )
22+ status = 200 ;
23+ break ;
24+
25+ default :
26+ break ;
27+ }
28+
29+ if ( request . method . toUpperCase ( ) !== "GET" ) {
30+ return {
31+ status : 303 ,
32+ headers : {
33+ location : "/"
34+ }
35+ } ;
36+ }
37+
38+ return {
39+ status,
40+ body
41+ }
42+ }
Original file line number Diff line number Diff line change 11import type { RequestHandler } from "@sveltejs/kit" ;
2+ import { api } from "./_api" ;
23
3- // TODO: Persist in database
4- let todos : Todo [ ] = [ ] ;
5-
6- export const get : RequestHandler = ( ) => {
7- return {
8- status : 200 ,
9- body : todos
10- }
4+ export const get : RequestHandler = ( request ) => {
5+ return api ( request ) ;
116}
127
138export const post : RequestHandler < { } , FormData > = ( request ) => {
14- todos . push ( {
9+ return api ( request , {
10+ uid : `${ Date . now ( ) } ` , // TODO: Replace with the UID from the datbase
1511 created_at : new Date ( ) ,
1612 text : request . body . get ( "text" ) ,
1713 done : false
1814 } ) ;
19-
20- return {
21- status : 303 ,
22- headers : {
23- location : "/"
24- }
25- }
2615}
You can’t perform that action at this time.
0 commit comments