Add SQLite database support as an alternative to Redis #41
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Implements SQLite as an alternative database backend for busuanzi, providing users with a lightweight, serverless option alongside the existing Redis support.
Changes Made
Database Abstraction Layer
process/dbutil
package with a unified database interfaceSQLite Implementation
process/sqliteutil
package for SQLite connectivitysite_pv
: Site page view counterspage_pv
: Page-specific view counterssite_uv
: Site unique visitors (replaces Redis HyperLogLog)page_uv
: Page unique visitors (replaces Redis HyperLogLog)Configuration Support
config.yaml
with new database selection optionsDatabase.Type
setting to choose betweenredis
andsqlite
SQLite.Path
configuration for database file locationCore Changes
main.go
to use the new database abstractioncore/count.go
to work with the unified interfaceUsage Examples
Redis Configuration (existing):
SQLite Configuration (new):
Benefits
Testing
Verified functionality with comprehensive tests:
This implementation provides users flexibility to choose the database backend that best fits their deployment requirements while maintaining the same API and functionality.
✨ Let Copilot coding agent set things up for you — coding agent works faster and does higher quality work when set up for your repo.