@@ -30,68 +30,67 @@ export const QueryActivitiesInput = object({
3030} ) ;
3131export type QueryActivitiesInput = Input < typeof QueryActivitiesInput > ;
3232
33+ export const Activity = object ( {
34+ // adjustedPace: optional(number()),
35+ // ascent: number(),
36+ // avg5x10s: number(),
37+ // avgCadence: number(),
38+ // avgHr: number(),
39+ // avgPower: optional(number()),
40+ // avgSpeed: number(),
41+ // avgStrkRate: number(),
42+ // best: number(),
43+ // best500m: optional(number()),
44+ // bestKm: optional(number()),
45+ // bestLen: optional(number()),
46+ // bodyTemperature: optional(number()),
47+ // cadence: number(),
48+ // calorie: number(),
49+ date : number ( ) ,
50+ // descent: number(),
51+ // device: string(),
52+ // deviceSportMode: optional(number()),
53+ // distance: number(),
54+ // downhillDesc: number(),
55+ // downhillDist: number(),
56+ // downhillTime: number(),
57+ // endTime: number(),
58+ // endTimezone: number(),
59+ // hasMessage: number(),
60+ // imageUrl: string(),
61+ // imageUrlType: number(),
62+ // isRunTest: number(),
63+ // isShowMs: number(),
64+ labelId : string ( ) ,
65+ // lengths: number(),
66+ // max2s: number(),
67+ // maxGrade: number(),
68+ // maxSlope: number(),
69+ // maxSpeed: number(),
70+ // mode: number(),
71+ name : string ( ) ,
72+ // np: number(),
73+ // pitch: number(),
74+ // sets: number(),
75+ // speedType: number(),
76+ sportType : number ( ) ,
77+ // startTime: number(),
78+ // startTimezone: number(),
79+ // step: number(),
80+ // subMode: number(),
81+ // swolf: optional(number()),
82+ // total: number(),
83+ // totalDescent: number(),
84+ // totalReps: number(),
85+ // totalTime: number(),
86+ // trainingLoad: number(),
87+ // unitType: number(),
88+ // waterTemperature: optional(number()),
89+ // workoutTime: number(),
90+ } ) ;
3391export const QueryActivitiesData = object ( {
3492 count : number ( ) ,
35- dataList : array (
36- object ( {
37- adjustedPace : number ( ) ,
38- ascent : number ( ) ,
39- avg5x10s : number ( ) ,
40- avgCadence : number ( ) ,
41- avgHr : number ( ) ,
42- avgPower : number ( ) ,
43- avgSpeed : number ( ) ,
44- avgStrkRate : number ( ) ,
45- best : number ( ) ,
46- best500m : number ( ) ,
47- bestKm : number ( ) ,
48- bestLen : number ( ) ,
49- bodyTemperature : number ( ) ,
50- cadence : number ( ) ,
51- calorie : number ( ) ,
52- date : number ( ) ,
53- descent : number ( ) ,
54- device : string ( ) ,
55- deviceSportMode : number ( ) ,
56- distance : number ( ) ,
57- downhillDesc : number ( ) ,
58- downhillDist : number ( ) ,
59- downhillTime : number ( ) ,
60- endTime : number ( ) ,
61- endTimezone : number ( ) ,
62- hasMessage : number ( ) ,
63- imageUrl : string ( ) ,
64- imageUrlType : number ( ) ,
65- isRunTest : number ( ) ,
66- isShowMs : number ( ) ,
67- labelId : string ( ) ,
68- lengths : number ( ) ,
69- max2s : number ( ) ,
70- maxGrade : number ( ) ,
71- maxSlope : number ( ) ,
72- maxSpeed : number ( ) ,
73- mode : number ( ) ,
74- name : string ( ) ,
75- np : number ( ) ,
76- pitch : number ( ) ,
77- sets : number ( ) ,
78- speedType : number ( ) ,
79- sportType : number ( ) ,
80- startTime : number ( ) ,
81- startTimezone : number ( ) ,
82- step : number ( ) ,
83- subMode : number ( ) ,
84- swolf : number ( ) ,
85- total : number ( ) ,
86- totalDescent : number ( ) ,
87- totalReps : number ( ) ,
88- totalTime : number ( ) ,
89- trainingLoad : number ( ) ,
90- unitType : number ( ) ,
91- waterTemperature : number ( ) ,
92- workoutTime : number ( ) ,
93- } ) ,
94- ) ,
93+ dataList : array ( Activity ) ,
9594 pageNumber : number ( ) ,
9695 totalPage : number ( ) ,
9796} ) ;
@@ -100,8 +99,18 @@ export type QueryActivitiesData = Input<typeof QueryActivitiesData>;
10099export const QueryActivitiesResponse = CorosResponse ( QueryActivitiesData ) ;
101100export type QueryActivitiesResponse = Input < typeof QueryActivitiesResponse > ;
102101
102+ export const QueryActivitiesOutput = object ( {
103+ count : number ( ) ,
104+ activities : array ( Activity ) ,
105+ } ) ;
106+ export type QueryActivitiesOutput = Input < typeof QueryActivitiesOutput > ;
107+
103108@Injectable ( )
104- export class QueryActivitiesRequest extends BaseRequest < QueryActivitiesInput , QueryActivitiesResponse > {
109+ export class QueryActivitiesRequest extends BaseRequest <
110+ QueryActivitiesInput ,
111+ QueryActivitiesResponse ,
112+ QueryActivitiesOutput
113+ > {
105114 constructor (
106115 private readonly httpService : HttpService ,
107116 private readonly corosConfig : CorosConfigService ,
@@ -118,7 +127,26 @@ export class QueryActivitiesRequest extends BaseRequest<QueryActivitiesInput, Qu
118127 return QueryActivitiesResponse ;
119128 }
120129
121- async handle ( { pageSize = 20 , pageNumber = 1 , from, to } : QueryActivitiesInput ) : Promise < QueryActivitiesData > {
130+ async handle ( { pageSize = 20 , pageNumber = 1 , from, to } : QueryActivitiesInput ) : Promise < QueryActivitiesOutput > {
131+ const activities = await this . getActivities ( { pageSize, pageNumber, from, to } ) ;
132+
133+ return {
134+ count : activities . length ,
135+ activities,
136+ } ;
137+ }
138+
139+ private async getActivities ( {
140+ pageSize,
141+ pageNumber,
142+ from,
143+ to,
144+ } : {
145+ pageSize : number ;
146+ pageNumber : number ;
147+ from ?: Date ;
148+ to ?: Date ;
149+ } ) : Promise < QueryActivitiesData [ 'dataList' ] > {
122150 const url = new URL ( '/activity/query' , this . corosConfig . apiUrl ) ;
123151 url . searchParams . append ( 'size' , String ( pageSize ) ) ;
124152 url . searchParams . append ( 'pageNumber' , String ( pageNumber ) ) ;
@@ -140,6 +168,15 @@ export class QueryActivitiesRequest extends BaseRequest<QueryActivitiesInput, Qu
140168 this . assertCorosResponseBase ( data ) ;
141169 this . assertCorosResponse ( data ) ;
142170
143- return data . data ;
171+ const {
172+ data : { dataList, totalPage } ,
173+ } = data ;
174+
175+ const activities = [ ...dataList ] ;
176+ if ( pageNumber < totalPage ) {
177+ const next = await this . getActivities ( { pageSize, pageNumber : pageNumber + 1 , from, to } ) ;
178+ activities . push ( ...next ) ;
179+ }
180+ return activities ;
144181 }
145182}
0 commit comments