1
1
import { getQuery } from 'oak/helpers.ts' ;
2
2
import { RouterMiddleware } from 'oak/mod.ts' ;
3
- import { Pokemon , PokemonOfTheDay } from '../models/pokemon.ts' ;
3
+ import { Pokemon } from '../models/pokemon.ts' ;
4
4
5
5
export const getPokemon : RouterMiddleware <
6
6
'/' ,
@@ -31,7 +31,7 @@ export const getPokemon: RouterMiddleware<
31
31
} ;
32
32
33
33
export const getPokemonDetail : RouterMiddleware < '/:idOrName' > = async (
34
- context ,
34
+ context
35
35
) => {
36
36
const idOrName = Number . isNaN ( Number ( context . params . idOrName ) )
37
37
? decodeURIComponent ( context . params . idOrName ! ) . toLowerCase ( )
@@ -56,44 +56,27 @@ export const getPokemonDetail: RouterMiddleware<'/:idOrName'> = async (
56
56
} ;
57
57
58
58
export const getPokemonOfTheDay : RouterMiddleware < '/potd' > = async (
59
- context ,
59
+ context
60
60
) => {
61
- const pool = 905 ;
62
- const todaysDate = new Date ( ) . toDateString ( ) ;
63
-
64
61
try {
65
62
const kv = await Deno . openKv ( ) ;
66
- const { value } = await kv . get < PokemonOfTheDay > ( [ 'potd' ] ) ;
67
- if ( value && value . date === todaysDate ) {
68
- context . response . body = value . pokemon ;
69
- kv . close ( ) ;
70
- } else {
71
- const randomNumber = Math . ceil ( Math . random ( ) * pool ) ;
72
- const { value : pokemonData } = await kv . get < Pokemon > ( [
73
- 'pokemon' ,
74
- randomNumber ,
75
- ] ) ;
76
- await kv . set ( [ 'potd' ] , {
77
- pokemon : pokemonData ,
78
- date : todaysDate ,
79
- } ) ;
80
- context . response . body = pokemonData ;
81
- kv . close ( ) ;
82
- }
63
+ const { value } = await kv . get < Pokemon > ( [ 'potd' ] ) ;
64
+ context . response . body = value ;
65
+ kv . close ( ) ;
83
66
} catch ( error ) {
84
67
console . log ( error ) ;
85
68
context . throw ( 500 , 'Internal server error' ) ;
86
69
}
87
70
} ;
88
71
89
72
export const migratePokemonToKv : RouterMiddleware < '/migrate' > = async (
90
- context ,
73
+ context
91
74
) => {
92
75
const body = context . request . body ( { type : 'json' } ) ;
93
76
const { id } = await body . value ;
94
77
95
78
const p : Pokemon = JSON . parse (
96
- await Deno . readTextFile ( `assets/data/${ id } .json` ) ,
79
+ await Deno . readTextFile ( `assets/data/${ id } .json` )
97
80
) ;
98
81
99
82
const primaryKey = [ 'pokemon' , p . id ] ;
@@ -114,3 +97,16 @@ export const migratePokemonToKv: RouterMiddleware<'/migrate'> = async (
114
97
115
98
context . response . body = 'Success!' ;
116
99
} ;
100
+
101
+ export const setPokemonOfTheDay = async ( ) => {
102
+ const pool = 905 ;
103
+ const kv = await Deno . openKv ( ) ;
104
+
105
+ const randomNumber = Math . ceil ( Math . random ( ) * pool ) ;
106
+ const { value : pokemonData } = await kv . get < Pokemon > ( [
107
+ 'pokemon' ,
108
+ randomNumber ,
109
+ ] ) ;
110
+ await kv . set ( [ 'potd' ] , pokemonData ) ;
111
+ kv . close ( ) ;
112
+ } ;
0 commit comments