import { LinkService } from "../link-service/link-service";
import { GroupsService, GroupContentsResource } from "../groups-service/groups-service";
-import { LinkResource, LinkClass } from "../../models/link";
-import { FilterBuilder } from "../../common/api/filter-builder";
-import { ListArguments, ListResults } from "../../common/api/common-resource-service";
-import { OrderBuilder } from "../../common/api/order-builder";
+import { LinkResource, LinkClass } from "~/models/link";
+import { FilterBuilder } from "~/common/api/filter-builder";
+import { ListResults } from "~/common/api/common-resource-service";
+import { FavoriteOrderBuilder } from "./favorite-order-builder";
+import { OrderBuilder } from "~/common/api/order-builder";
-export interface FavoriteListArguments extends ListArguments {
- filters?: FilterBuilder<LinkResource>;
- order?: OrderBuilder<LinkResource>;
+export interface FavoriteListArguments {
+ limit?: number;
+ offset?: number;
+ filters?: FilterBuilder;
+ order?: FavoriteOrderBuilder;
}
+
export class FavoriteService {
constructor(
private linkService: LinkService,
return this.linkService
.list({
filters: FilterBuilder
- .create<LinkResource>()
+ .create()
.addEqual('tailUuid', data.userUuid)
.addEqual('headUuid', data.resourceUuid)
.addEqual('linkClass', LinkClass.STAR)
results.items.map(item => this.linkService.delete(item.uuid))));
}
- list(userUuid: string, args: FavoriteListArguments = {}): Promise<ListResults<GroupContentsResource>> {
+ list(userUuid: string, { filters, limit, offset, order }: FavoriteListArguments = {}): Promise<ListResults<GroupContentsResource>> {
const listFilter = FilterBuilder
- .create<LinkResource>()
+ .create()
.addEqual('tailUuid', userUuid)
.addEqual('linkClass', LinkClass.STAR);
return this.linkService
.list({
- ...args,
- filters: args.filters ? args.filters.concat(listFilter) : listFilter
+ filters: filters ? filters.concat(listFilter) : listFilter,
+ limit,
+ offset,
+ order: order ? order.getLinkOrder() : OrderBuilder.create<LinkResource>()
})
.then(results => {
const uuids = results.items.map(item => item.headUuid);
return this.groupsService.contents(userUuid, {
- limit: args.limit,
- offset: args.offset,
- filters: FilterBuilder.create<GroupContentsResource>().addIn('uuid', uuids),
+ limit,
+ offset,
+ order: order ? order.getContentOrder() : OrderBuilder.create<GroupContentsResource>(),
+ filters: FilterBuilder.create().addIn('uuid', uuids),
recursive: true
});
});
return this.linkService
.list({
filters: FilterBuilder
- .create<LinkResource>()
+ .create()
.addIn("headUuid", resourceUuids)
.addEqual("tailUuid", userUuid)
.addEqual("linkClass", LinkClass.STAR)
}, {}));
}
-
-}
\ No newline at end of file
+}