Skip to main content

BookmarkService

Facade over the repository and search index.

Handles validation, cache invalidation, and cross-entity operations (e.g. removing a tag also strips it from all bookmarks).

Methods


create_bookmark()

@classmethod
def create_bookmark(
data: Dict[str, Any]
) - > Tuple[Optional[[Bookmark](../../../models/bookmark/bookmark.md?sid=app_models_bookmark_bookmark)], Optional[str]]

Validate and persist a new bookmark.

Parameters

NameTypeDescription
dataDict[str, Any]Dict with url, title, and optional fields.

Returns

TypeDescription
Tuple[Optional[[Bookmark](../../../models/bookmark/bookmark.md?sid=app_models_bookmark_bookmark)], Optional[str]]Tuple of (bookmark, None) on success or (None, error_message) on failure.

get_bookmark()

@classmethod
def get_bookmark(
bookmark_id: str
) - > Optional[[Bookmark](../../../models/bookmark/bookmark.md?sid=app_models_bookmark_bookmark)]

Retrieve a bookmark by ID, using cache when available.

Parameters

NameTypeDescription
bookmark_idstrThe unique identifier of the bookmark to retrieve.

Returns

TypeDescription
Optional[[Bookmark](../../../models/bookmark/bookmark.md?sid=app_models_bookmark_bookmark)]The requested bookmark object if found, otherwise None.

list_bookmarks()

@classmethod
def list_bookmarks(
page: int = 1,
per_page: int = 25,
status: Optional[str] = null
) - > Tuple[List[[Bookmark](../../../models/bookmark/bookmark.md?sid=app_models_bookmark_bookmark)], int]

Return a paginated list of bookmarks.

Parameters

NameTypeDescription
pageint = 11-based page number.
per_pageint = 25Number of items per page.
statusOptional[str] = nullOptional status filter.

Returns

TypeDescription
Tuple[List[[Bookmark](../../../models/bookmark/bookmark.md?sid=app_models_bookmark_bookmark)], int]Tuple of (bookmarks_list, total_count).

update_bookmark()

@classmethod
def update_bookmark(
bookmark_id: str,
data: Dict[str, Any]
) - > Tuple[Optional[[Bookmark](../../../models/bookmark/bookmark.md?sid=app_models_bookmark_bookmark)], Optional[str]]

Partially update a bookmark.

Parameters

NameTypeDescription
bookmark_idstrThe unique identifier of the bookmark to update.
dataDict[str, Any]A dictionary containing the fields to update, such as title, description, or url.

Returns

TypeDescription
Tuple[Optional[[Bookmark](../../../models/bookmark/bookmark.md?sid=app_models_bookmark_bookmark)], Optional[str]]The updated bookmark and None on success, or None and an error message if validation fails.

delete_bookmark()

@classmethod
def delete_bookmark(
bookmark_id: str
) - > bool

Soft-delete by trashing the bookmark.

Parameters

NameTypeDescription
bookmark_idstrThe unique identifier of the bookmark to soft-delete.

Returns

TypeDescription
boolTrue if the bookmark was successfully trashed, False if the bookmark was not found.

archive_bookmark()

@classmethod
def archive_bookmark(
bookmark_id: str
) - > Optional[[Bookmark](../../../models/bookmark/bookmark.md?sid=app_models_bookmark_bookmark)]

Archive a bookmark.

Parameters

NameTypeDescription
bookmark_idstrThe unique identifier of the bookmark to archive.

Returns

TypeDescription
Optional[[Bookmark](../../../models/bookmark/bookmark.md?sid=app_models_bookmark_bookmark)]The archived bookmark object, or None if the bookmark was not found.

restore_bookmark()

@classmethod
def restore_bookmark(
bookmark_id: str
) - > Optional[[Bookmark](../../../models/bookmark/bookmark.md?sid=app_models_bookmark_bookmark)]

Restore a bookmark to active status.

Parameters

NameTypeDescription
bookmark_idstrThe unique identifier of the bookmark to restore.

Returns

TypeDescription
Optional[[Bookmark](../../../models/bookmark/bookmark.md?sid=app_models_bookmark_bookmark)]The restored bookmark object, or None if the bookmark was not found.

@classmethod
def search(
query: str,
limit: int = 20
) - > List[[Bookmark](../../../models/bookmark/bookmark.md?sid=app_models_bookmark_bookmark)]

Full-text search across bookmarks.

Parameters

NameTypeDescription
querystrThe search string used to match bookmark content.
limitint = 20The maximum number of search results to return.

Returns

TypeDescription
List[[Bookmark](../../../models/bookmark/bookmark.md?sid=app_models_bookmark_bookmark)]A list of bookmarks matching the search query.

list_tags()

@classmethod
def list_tags() - > List[[Tag](../../../models/tag/tag.md?sid=app_models_tag_tag)]

Return all tags.

Returns

TypeDescription
List[[Tag](../../../models/tag/tag.md?sid=app_models_tag_tag)]A list of all available tag objects.

create_tag()

@classmethod
def create_tag(
data: Dict[str, Any]
) - > Tuple[Optional[[Tag](../../../models/tag/tag.md?sid=app_models_tag_tag)], Optional[str]]

Validate and persist a new tag.

Parameters

NameTypeDescription
dataDict[str, Any]A dictionary containing tag attributes, primarily the name.

Returns

TypeDescription
Tuple[Optional[[Tag](../../../models/tag/tag.md?sid=app_models_tag_tag)], Optional[str]]A tuple containing the new tag and None on success, or None and an error message on failure.

delete_tag()

@classmethod
def delete_tag(
tag_id: str
) - > bool

Delete a tag and strip it from all bookmarks.

Parameters

NameTypeDescription
tag_idstrThe unique identifier of the tag to be removed.

Returns

TypeDescription
boolTrue if the tag was found and deleted, False otherwise.

update_tag()

@classmethod
def update_tag(
tag_id: str,
data: Dict[str, Any]
) - > Tuple[Optional[[Tag](../../../models/tag/tag.md?sid=app_models_tag_tag)], Optional[str]]

Update a tag's name or colour.

Parameters

NameTypeDescription
tag_idstrThe unique identifier of the tag to update.
dataDict[str, Any]A dictionary containing the new name or color values for the tag.

Returns

TypeDescription
Tuple[Optional[[Tag](../../../models/tag/tag.md?sid=app_models_tag_tag)], Optional[str]]A tuple containing the updated tag and None on success, or None and an error message on failure.

list_collections()

@classmethod
def list_collections() - > List[[Collection](../../../models/collection/collection.md?sid=app_models_collection_collection)]

Return all collections.

Returns

TypeDescription
List[[Collection](../../../models/collection/collection.md?sid=app_models_collection_collection)]A list of all collection objects.

get_collection()

@classmethod
def get_collection(
collection_id: str
) - > Optional[[Collection](../../../models/collection/collection.md?sid=app_models_collection_collection)]

Retrieve a collection by ID.

Parameters

NameTypeDescription
collection_idstrThe unique identifier of the collection to retrieve.

Returns

TypeDescription
Optional[[Collection](../../../models/collection/collection.md?sid=app_models_collection_collection)]The requested collection object if found, otherwise None.

create_collection()

@classmethod
def create_collection(
data: Dict[str, Any]
) - > Tuple[Optional[[Collection](../../../models/collection/collection.md?sid=app_models_collection_collection)], Optional[str]]

Create a new collection.

Parameters

NameTypeDescription
dataDict[str, Any]A dictionary containing collection attributes, including the required name.

Returns

TypeDescription
Tuple[Optional[[Collection](../../../models/collection/collection.md?sid=app_models_collection_collection)], Optional[str]]A tuple containing the new collection and None on success, or None and an error message if the name is missing.

add_to_collection()

@classmethod
def add_to_collection(
collection_id: str,
bookmark_id: str
) - > bool

Add a bookmark to a collection.

Parameters

NameTypeDescription
collection_idstrThe unique identifier of the target collection.
bookmark_idstrThe unique identifier of the bookmark to add.

Returns

TypeDescription
boolTrue if the bookmark was successfully added to the collection, False if either entity was not found.

remove_from_collection()

@classmethod
def remove_from_collection(
collection_id: str,
bookmark_id: str
) - > bool

Remove a bookmark from a collection.

Parameters

NameTypeDescription
collection_idstrThe unique identifier of the collection.
bookmark_idstrThe unique identifier of the bookmark to remove.

Returns

TypeDescription
boolTrue if the bookmark was successfully removed, False if the collection was not found or the bookmark was not in it.