added rust server
This commit is contained in:
1 parent
a2aa714a83
commit
b32eabcd12
21 files changed
+5199
-143
No files matched your search
@@ -2,29 +2,36 @@
|
||||
|
||||
## Требования
|
||||
|
||||
Проект использует Go 1.25.0.
|
||||
Production-сервер использует Rust 1.90+ и bundled SQLite. Go 1.25+ нужен для сохранённой эталонной реализации и differential-проверок. Python 3 используется без сторонних пакетов.
|
||||
|
||||
Проверить локальную версию:
|
||||
|
||||
```bash
|
||||
rustc --version
|
||||
cargo --version
|
||||
go version
|
||||
```
|
||||
|
||||
## Установка зависимостей
|
||||
|
||||
```bash
|
||||
cargo fetch --locked
|
||||
go mod download
|
||||
```
|
||||
|
||||
## Сборка
|
||||
|
||||
```bash
|
||||
cargo build --locked
|
||||
go build ./...
|
||||
```
|
||||
|
||||
## Тесты
|
||||
|
||||
```bash
|
||||
cargo test --locked
|
||||
cargo build --locked
|
||||
python3 tools/compatibility.py
|
||||
go test ./...
|
||||
```
|
||||
|
||||
@@ -37,6 +44,8 @@ go test -race ./...
|
||||
## Static checks
|
||||
|
||||
```bash
|
||||
cargo fmt --check
|
||||
cargo clippy --locked --all-targets -- -D warnings
|
||||
go vet ./...
|
||||
```
|
||||
|
||||
@@ -48,24 +57,24 @@ go vet ./...
|
||||
|
||||
Не коммитьте реальные credentials.
|
||||
|
||||
Пример общего workflow:
|
||||
Собрать и запустить Rust-сервер:
|
||||
|
||||
```bash
|
||||
go mod download
|
||||
go test ./...
|
||||
go build ./...
|
||||
./<server-binary>
|
||||
cargo build --locked --release
|
||||
export BALANCE_JWT_SECRET="replace-with-a-long-random-secret"
|
||||
export BALANCE_DB_PATH="./data/balance.db"
|
||||
./target/release/balance-server
|
||||
```
|
||||
|
||||
Имя binary и обязательные env vars определяются текущей entrypoint/config реализацией.
|
||||
По умолчанию сервер слушает `:8080`. Файл `.env` читает Docker Compose; при
|
||||
прямом запуске переменные нужно передать процессу через окружение.
|
||||
|
||||
## Database
|
||||
|
||||
Перед первым запуском:
|
||||
1. поднять требуемую БД;
|
||||
2. применить migrations, если проект их использует;
|
||||
3. задать connection settings;
|
||||
4. проверить health/startup logs.
|
||||
SQLite встроен в executable. При первом запуске сервер создаёт каталог,
|
||||
таблицы и индексы автоматически. Отдельный процесс БД не нужен. При переходе
|
||||
с Go сохраните существующий файл БД и `BALANCE_JWT_SECRET`; подробная
|
||||
процедура и откат описаны в [DEPLOYMENT.md](DEPLOYMENT.md).
|
||||
|
||||
## Production
|
||||
|
||||
@@ -74,11 +83,13 @@ go build ./...
|
||||
```text
|
||||
source
|
||||
↓
|
||||
go test ./...
|
||||
cargo fmt --check && cargo test --locked
|
||||
↓
|
||||
go vet ./...
|
||||
cargo clippy --locked --all-targets -- -D warnings
|
||||
↓
|
||||
go build ./...
|
||||
cargo build --locked --release
|
||||
↓
|
||||
python3 tools/compatibility.py --rust-binary target/release/balance-server
|
||||
↓
|
||||
container/package
|
||||
↓
|
||||
@@ -105,3 +116,5 @@ health check
|
||||
- concurrent sync с двух устройств;
|
||||
- login/refresh после истечения access token;
|
||||
- delete → pull на другом устройстве.
|
||||
|
||||
Production build: `cargo build --locked --release`. Прямой запуск: `BALANCE_JWT_SECRET=<secret> target/release/balance-server`, порт 8080. Docker Compose публикует порт 8123 и сохраняет прежний volume `/data`. Процедура миграции Go → Rust и rollback: [DEPLOYMENT.md](DEPLOYMENT.md).
|
||||
Reference in new issue
Block a user