Commit graph

3 commits

Author SHA1 Message Date
Felipe Martin
c58c35509b
feat: improve SQLite performance (#1024)
* 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
2025-01-02 09:46:39 +01:00
Felipe Martin
72aecd2b60
feat: new system info panel in webui settings (#926)
* 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
2024-06-08 17:48:55 +02:00
Paco Esteban
02247b215b
refactor: allow specific sqlite engine for OpenBSD (#780)
* 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>
2024-05-02 16:38:16 +02:00