48 lines
2.1 KiB
Markdown
48 lines
2.1 KiB
Markdown
# Noto
|
|
|
|
Noto is a C++23 embedded SQLite database management library. It provides connections, transactions, prepared statements, schema helpers, migrations, backup/export helpers, integrity checks, PRAGMA helpers, and `std::expected`-based error reporting.
|
|
|
|
Noto uses Modulus for shared build tooling, Boost.JSON, and SQLite integration. Product-specific schemas and migrations belong in consuming applications.
|
|
|
|
Database coroutines serialize operations on the connection strand and execute SQLite calls on the supplied executor. They do not move blocking work to a background thread. Applications that need responsive control or network loops should supply a dedicated database executor. Private implementations separate connection/statement/transaction ownership, query execution, filesystem protection, backup/restore, and SQL export; the public API and transaction semantics are unchanged.
|
|
|
|
## Build
|
|
|
|
Code style is managed by Modulus: run `./modulus.py format` or `./modulus.py format --check`. The generated Neovim integration uses the same pinned container formatter for C++ and Python, including existing format-on-save toggles. Configure first to prepare tooling; customize `tooling.editor.clang_format` and `tooling.format.exclude` in `modulus.json`, not generated editor files. See the shared Modulus README for the compact layout and no-alias policy.
|
|
|
|
Configure, build, and test the default target:
|
|
|
|
```sh
|
|
python3 modulus.py configure
|
|
python3 modulus.py build
|
|
python3 modulus.py test
|
|
```
|
|
|
|
Release verification:
|
|
|
|
```sh
|
|
python3 modulus.py configure --target x86_64_gcc12_release
|
|
python3 modulus.py build --target x86_64_gcc12_release
|
|
python3 modulus.py test --target x86_64_gcc12_release
|
|
```
|
|
|
|
Create packages:
|
|
|
|
```sh
|
|
python3 modulus.py package --all
|
|
```
|
|
|
|
Configure/build/test can read public packages anonymously from the khodo Conan registry. Publishing requires credentials only on the upload step:
|
|
|
|
```sh
|
|
CONAN_USER=<user> \
|
|
CONAN_TOKEN=<token> \
|
|
NOTO_CONAN_UPLOAD=1 \
|
|
MODULUS_ALLOW_PACKAGE_REPLACE=1 \
|
|
python3 modulus.py package --all --replace
|
|
```
|
|
|
|
## License
|
|
|
|
Noto is released under the MIT License.
|