File size: 1,274 Bytes
3ac10cb | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 | from __future__ import annotations
from datetime import datetime
from typing import Optional
from pydantic import BaseModel, HttpUrl
class BookmarkCreate(BaseModel):
url: str
title: str
description: str = ""
context: str = ""
user_tags: list[str] = []
class BookmarkUpdate(BaseModel):
title: Optional[str] = None
description: Optional[str] = None
context: Optional[str] = None
user_tags: Optional[list[str]] = None
class BookmarkResponse(BaseModel):
id: int
url: str
title: str
description: str
context: str
folder_path: str
domain: str
auto_tags: list[str]
user_tags: list[str]
content_snippet: str
created_at: str
updated_at: str
visit_count: int
is_dead: bool
class SearchResult(BaseModel):
bookmark: BookmarkResponse
score: float
match_type: str
class SearchResponse(BaseModel):
results: list[SearchResult]
query: str
total: int
class ImportResult(BaseModel):
imported: int
skipped: int
errors: int
class TagCount(BaseModel):
tag: str
count: int
class StatsResponse(BaseModel):
total_bookmarks: int
total_tags: int
top_domains: list[dict]
dead_links: int
recent_bookmarks: list[BookmarkResponse]
|