Skip to content

Commit 8f8735f

Browse files
committed
migrate usage of floating prefix definitions...
and update dated impl against current interfaces
1 parent 8a5cf45 commit 8f8735f

File tree

1 file changed

+17
-27
lines changed

1 file changed

+17
-27
lines changed

packages/db/src/impl/couch/user-course-relDB.ts

Lines changed: 17 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -4,20 +4,18 @@ import {
44
UserCourseSettings,
55
UsrCrsDataInterface,
66
} from '@db/core';
7+
78
import moment, { Moment } from 'moment';
8-
import { getStartAndEndKeys, REVIEW_PREFIX, REVIEW_TIME_FORMAT } from '.';
9-
import { CourseDB } from './courseDB';
10-
import { User } from './userDB';
9+
10+
import { UserDBInterface } from '@db/core';
1111
import { logger } from '../../util/logger';
1212

1313
export class UsrCrsData implements UsrCrsDataInterface {
14-
private user: User;
15-
private course: CourseDB;
14+
private user: UserDBInterface;
1615
private _courseId: string;
1716

18-
constructor(user: User, courseId: string) {
17+
constructor(user: UserDBInterface, courseId: string) {
1918
this.user = user;
20-
this.course = new CourseDB(courseId, async () => this.user);
2119
this._courseId = courseId;
2220
}
2321

@@ -47,32 +45,24 @@ export class UsrCrsData implements UsrCrsDataInterface {
4745
}
4846
}
4947
public updateCourseSettings(updates: UserCourseSetting[]): void {
50-
void this.user.updateCourseSettings(this._courseId, updates);
48+
// TODO: Add updateCourseSettings method to UserDBInterface
49+
// For now, we'll need to cast to access the concrete implementation
50+
if ('updateCourseSettings' in this.user) {
51+
void (this.user as any).updateCourseSettings(this._courseId, updates);
52+
}
5153
}
5254

5355
private async getReviewstoDate(targetDate: Moment) {
54-
const keys = getStartAndEndKeys(REVIEW_PREFIX);
55-
56-
const reviews = await this.user.remote().allDocs<ScheduledCard>({
57-
startkey: keys.startkey,
58-
endkey: keys.endkey,
59-
include_docs: true,
60-
});
56+
// Use the interface method instead of direct database access
57+
const allReviews = await this.user.getPendingReviews(this._courseId);
6158

6259
logger.debug(
6360
`Fetching ${this.user.getUsername()}'s scheduled reviews for course ${this._courseId}.`
6461
);
65-
return reviews.rows
66-
.filter((r) => {
67-
if (r.id.startsWith(REVIEW_PREFIX)) {
68-
const date = moment.utc(r.id.substr(REVIEW_PREFIX.length), REVIEW_TIME_FORMAT);
69-
if (targetDate.isAfter(date)) {
70-
if (this._courseId === undefined || r.doc!.courseId === this._courseId) {
71-
return true;
72-
}
73-
}
74-
}
75-
})
76-
.map((r) => r.doc!);
62+
63+
return allReviews.filter((review: ScheduledCard) => {
64+
const reviewTime = moment.utc(review.reviewTime);
65+
return targetDate.isAfter(reviewTime);
66+
});
7767
}
7868
}

0 commit comments

Comments
 (0)