mirror of https://github.com/buster-so/buster.git
70 lines
2.4 KiB
Plaintext
70 lines
2.4 KiB
Plaintext
---
|
|
description:
|
|
globs:
|
|
alwaysApply: true
|
|
---
|
|
# Buster API Repository Navigation Guide
|
|
|
|
## Row Limit Implementation Notes
|
|
All database query functions in the query_engine library have been updated to respect a 5000 row limit by default. The limit can be overridden by passing an explicit limit value. This is implemented in the libs/query_engine directory.
|
|
|
|
## Documentation
|
|
The project's detailed documentation is in the `/documentation` directory:
|
|
- `handlers.mdc` - Handler patterns
|
|
- `libs.mdc` - Library construction guidelines
|
|
- `rest.mdc` - REST API formatting
|
|
- `testing.mdc` - Testing standards
|
|
- `tools.mdc` - Tools documentation
|
|
- `websockets.mdc` - WebSocket patterns
|
|
|
|
While these files contain best practices for writing tests, REST patterns, etc., **each subdirectory should have its own README.md or CLAUDE.md** that should be referenced first when working in that specific area. These subdirectory-specific guides often contain implementation details and patterns specific to that component.
|
|
|
|
## Repository Structure
|
|
- `src/` - Main server code
|
|
- `routes/` - API endpoints (REST, WebSocket)
|
|
- `utils/` - Shared utilities
|
|
- `types/` - Common type definitions
|
|
- `libs/` - Shared libraries
|
|
- Each lib has its own Cargo.toml and docs
|
|
- `migrations/` - Database migrations
|
|
- `tests/` - Integration tests
|
|
- `documentation/` - Detailed docs
|
|
- `prds/` - Product requirements
|
|
|
|
## Build Commands
|
|
- `make dev` - Start development
|
|
- `make stop` - Stop development
|
|
- `cargo test -- --test-threads=1 --nocapture` - Run tests
|
|
- `cargo clippy` - Run linter
|
|
- `cargo build` - Build project
|
|
|
|
## Core Guidelines
|
|
- Use `anyhow::Result` for error handling
|
|
- Group imports (std lib, external, internal)
|
|
- Put shared types in `types/`, route-specific types in route files
|
|
- Use snake_case for variables/functions, CamelCase for types
|
|
- Never log secrets or sensitive data
|
|
- All dependencies inherit from workspace using `{ workspace = true }`
|
|
- Use database connection pool from `get_pg_pool().get().await?`
|
|
- Write tests with `tokio::test` for async tests
|
|
|
|
## Common Database Pattern
|
|
```rust
|
|
let pool = get_pg_pool();
|
|
let mut conn = pool.get().await?;
|
|
|
|
diesel::update(table)
|
|
.filter(conditions)
|
|
.set(values)
|
|
.execute(&mut conn)
|
|
.await?
|
|
```
|
|
|
|
## Common Concurrency Pattern
|
|
```rust
|
|
let futures: Vec<_> = items
|
|
.into_iter()
|
|
.map(|item| process_item(item))
|
|
.collect();
|
|
let results = try_join_all(futures).await?;
|
|
``` |