import { injectable } from "inversify"; import { IJsonApiResponse, IJsonApiResource, IJsonApiRelationship, } from "../../interfaces"; import { IBookmark } from "../bookmark"; export const bookmarkListType = "bookmark-list"; export interface IBookmarkListAttributes { entries_count?: number; name?: string; source?: "dotcom" | "guides"; visibility?: "public" | "private"; updated_at?: string; inserted_at?: string; extra?: string; } export interface IBookmarkListResource extends IJsonApiResource {} export interface IBookmarkListResponse extends IJsonApiResponse {} export interface IBookmarkList { id?: string; name?: string; source?: "dotcom" | "guides"; visibility?: "public" | "private"; entries?: IBookmark[]; updatedAt?: Date; insertedAt?: Date; extra?: string; count: () => number; expectedEntriesCount?: number; } @injectable() export default class BookmarkList implements IBookmarkList { id?: string; name?: string; source?: "dotcom" | "guides"; visibility?: "public" | "private"; entries?: IBookmark[]; updatedAt?: Date; insertedAt?: Date; extra?: string; expectedEntriesCount?: number; constructor() { this.entries = []; } public count() { return this.entries.length; } }