66 */
77
88import { log } from "../common/logger"
9- import WastePerDay , { merge , WasteData } from "@entity/dao/waste-per-day"
109import DataItem from "@entity/dto/data-item"
1110import { formatTime } from "@util/time"
1211import BaseDatabase from "./common/base-database"
1312import { ARCHIVED_PREFIX , DATE_FORMAT , REMAIN_WORD_PREFIX } from "./common/constant"
13+ import { zero , merge , isNotZero } from "@util/waste-per-day"
1414
1515export type TimerCondition = {
1616 /**
@@ -107,20 +107,20 @@ function processCondition(condition: TimerCondition): _TimerCondition {
107107 return result
108108}
109109
110- function mergeMigration ( exist : WastePerDay | undefined , another : any ) {
111- exist = exist || WastePerDay . zero ( )
112- return merge ( exist , WastePerDay . of ( another . total || 0 , another . focus || 0 , another . time || 0 ) )
110+ function mergeMigration ( exist : timer . stat . WastePerDay | undefined , another : any ) {
111+ exist = exist || zero ( )
112+ return merge ( exist , { total : another . total || 0 , focus : another . focus || 0 , time : another . time || 0 } )
113113}
114114
115- function migrate ( exists : { [ key : string ] : WastePerDay } , data : any ) : { [ key : string ] : WastePerDay } {
115+ function migrate ( exists : { [ key : string ] : timer . stat . WastePerDay } , data : any ) : { [ key : string ] : timer . stat . WastePerDay } {
116116 const result = { }
117117 Object . entries ( data )
118118 . filter ( ( [ key ] ) => / ^ 2 0 \d { 2 } [ 0 1 ] \d [ 0 - 3 ] \d .* / . test ( key ) )
119119 . forEach ( ( [ key , value ] ) => {
120120 if ( typeof value !== "object" ) return
121121 const exist = exists [ key ]
122122 const merged = mergeMigration ( exist , value )
123- merged && merged . isNotZero ( ) && ( result [ key ] = mergeMigration ( exist , value ) )
123+ merged && isNotZero ( merged ) && ( result [ key ] = mergeMigration ( exist , value ) )
124124 } )
125125 return result
126126}
@@ -151,10 +151,10 @@ class TimerDatabase extends BaseDatabase {
151151 * @param host host
152152 * @since 0.1.3
153153 */
154- async accumulate ( host : string , date : Date , item : WastePerDay ) : Promise < void > {
154+ async accumulate ( host : string , date : Date | string , item : timer . stat . WastePerDay ) : Promise < void > {
155155 const key = this . generateKey ( host , date )
156156 const items = await this . storage . get ( key )
157- const exist : WastePerDay = merge ( items [ key ] as WastePerDay || new WastePerDay ( ) , item )
157+ const exist : timer . stat . WastePerDay = merge ( items [ key ] as timer . stat . WastePerDay || zero ( ) , item )
158158 const toUpdate = { }
159159 toUpdate [ key ] = exist
160160 log ( 'toUpdate' , toUpdate )
@@ -168,7 +168,7 @@ class TimerDatabase extends BaseDatabase {
168168 * @param date date
169169 * @since 0.1.8
170170 */
171- async accumulateBatch ( data : WasteData , date : Date ) : Promise < WasteData > {
171+ async accumulateBatch ( data : timer . stat . WasteData , date : Date ) : Promise < timer . stat . WasteData > {
172172 const hosts = Object . keys ( data )
173173 if ( ! hosts . length ) return
174174 const dateStr = formatTime ( date , DATE_FORMAT )
@@ -178,10 +178,10 @@ class TimerDatabase extends BaseDatabase {
178178 const items = await this . storage . get ( Object . values ( keys ) )
179179
180180 const toUpdate = { }
181- const afterUpdated : WasteData = { }
181+ const afterUpdated : timer . stat . WasteData = { }
182182 Object . entries ( keys ) . forEach ( ( [ host , key ] ) => {
183183 const item = data [ host ]
184- const exist : WastePerDay = merge ( items [ key ] as WastePerDay || new WastePerDay ( ) , item )
184+ const exist : timer . stat . WastePerDay = merge ( items [ key ] as timer . stat . WastePerDay || zero ( ) , item )
185185 toUpdate [ key ] = afterUpdated [ host ] = exist
186186 } )
187187 await this . storage . set ( toUpdate )
@@ -203,7 +203,7 @@ class TimerDatabase extends BaseDatabase {
203203 for ( let key in items ) {
204204 const date = key . substring ( 0 , 8 )
205205 const host = key . substring ( 8 )
206- const val : WastePerDay = items [ key ]
206+ const val : timer . stat . WastePerDay = items [ key ]
207207 if ( this . filterBefore ( date , host , val , _cond ) ) {
208208 const { total, focus, time } = val
209209 result . push ( { date, host, total, focus, time, mergedHosts : [ ] } )
@@ -250,7 +250,7 @@ class TimerDatabase extends BaseDatabase {
250250 * @param condition query parameters
251251 * @return true if valid, or false
252252 */
253- private filterBefore ( date : string , host : string , val : WastePerDay , condition : _TimerCondition ) : boolean {
253+ private filterBefore ( date : string , host : string , val : timer . stat . WastePerDay , condition : _TimerCondition ) : boolean {
254254 const { focus, total, time } = val
255255 const { timeStart, timeEnd, totalStart, totalEnd, focusStart, focusEnd } = condition
256256
@@ -266,10 +266,10 @@ class TimerDatabase extends BaseDatabase {
266266 *
267267 * @since 0.0.5
268268 */
269- async get ( host : string , date : Date ) : Promise < WastePerDay > {
269+ async get ( host : string , date : Date ) : Promise < timer . stat . WastePerDay > {
270270 const key = this . generateKey ( host , date )
271271 const items = await this . storage . get ( null )
272- return Promise . resolve ( items [ key ] || new WastePerDay ( ) )
272+ return Promise . resolve ( items [ key ] || zero ( ) )
273273 }
274274
275275 /**
@@ -342,7 +342,7 @@ class TimerDatabase extends BaseDatabase {
342342 for ( let key in items ) {
343343 const date = key . substring ( 0 , 8 )
344344 const host = key . substring ( 8 )
345- const val : WastePerDay = items [ key ]
345+ const val : timer . stat . WastePerDay = items [ key ]
346346 if ( this . filterBefore ( date , host , val , _cond ) ) {
347347 count ++
348348 }
0 commit comments