* refactor: Improve SQLite performance with connection pooling and retry logic
* feat: Add withTx and withTxRetry methods to SQLiteDatabase for handling database locks
* refactor: add Init command to all databases
* refactor: Improve transaction handling with retry and error management
* refactor: Remove panic/recover pattern in transaction handling
* refactor: Replace `errors.WithStack` with `fmt.Errorf` in transaction methods
* docs: Add docstrings to `withTx` and `withTxRetry` methods in SQLite database implementation
* feat: use new withTxRetry in SaveBookmarks
* feat: sqlite inmmediate transactions by default
* refactor: Split SQLiteDatabase into separate writer and reader dbbase instances
* refactor: Update Init method to configure both reader and writer database connections
* feat: use writer/reader sqlite databases
* refactor: Replace all read calls to use the `reader` database instance
* refactor: Replace errors.WithStack with fmt.Errorf and add nil checks
refactor: Replace errors.WithStack with fmt.Errorf and add proper error handling
fix: Handle potential database connection errors with improved error wrapping
refactor: Replace errors.WithStack with fmt.Errorf and improve error handling
refactor: Replace error handling with fmt.Errorf and proper nil checks
refactor: Replace errors.WithStack with fmt.Errorf and add nil error checks
refactor: Replace errors.WithStack with fmt.Errorf and add nil checks in sqlite.go
refactor: Replace errors.WithStack with fmt.Errorf and add nil checks
refactor: Replace errors.WithStack with fmt.Errorf and improve error handling
refactor: Replace remaining errors.WithStack with fmt.Errorf in sqlite.go
* refactor: Use withTxRetry for SetDatabaseSchemaVersion method
* fix: Simplify error handling in GetBookmark and GetAccount methods
* refactor: Remove duplicated non-nil error checks in sqlite.go
fix: duplicated non-nil checks
* tests: use testutil instead of a manual in memory sqlite db
* fix: openbsd sqlite connection
* frontend
* fixed Database.DBx return value
* api endpoint
* updated swagger
* fix openbsd variable dereference
* tests
* only load information if user is owner
* memory improvement for other routes
* remove dependencies that use syscall.Syscall*
OpenBSD will be removing direct access to `syscall(2)` soon.
Shiori will stop working because of this, as some of its dependencies
rely heavily on the use of `syscall.Syscall*`, which ends up using
`syscall(2)`. This commit removes those dependencies by reverting back
to use github.com/mattn/go-sqlite3 instead of modernc.org/sqlite to deal
with the sqlite database backend.
* add ~emersion/go-sqlite3-fts5
* enable cgo to check ci
* fts5 build flag
* split sqlite logic using build flags
* disable cgo again
* added ci test for bsd systems
* remove openbsd ci
* Revert "remove openbsd ci"
This reverts commit f394148385.
* fix makefile go_test_flags
---------
Co-authored-by: Felipe M <me@fmartingr.com>
Co-authored-by: Felipe Martin <812088+fmartingr@users.noreply.github.com>