Files
srdb/Makefile
bourdon 23843493b8 重构代码结构并添加完整功能
主要改动:
- 重构目录结构:合并子目录到根目录,简化项目结构
- 添加完整的查询 API:支持复杂条件查询、字段选择、游标模式
- 实现 LSM-Tree Compaction:7层结构、Score-based策略、后台异步合并
- 添加 Web UI:基于 Lit 的现代化管理界面,支持数据浏览和 Manifest 查看
- 完善文档:添加 README.md 和 examples/webui/README.md

新增功能:
- Query Builder:链式查询 API,支持 Eq/Lt/Gt/In/Between/Contains 等操作符
- Web UI 组件:srdb-app、srdb-table-list、srdb-data-view、srdb-manifest-view 等
- 列选择持久化:自动保存到 localStorage
- 刷新按钮:一键刷新当前视图
- 主题切换:深色/浅色主题支持

代码优化:
- 使用 Go 1.24 新特性:range 7、min()、maps.Copy()、slices.Sort()
- 统一组件命名:所有 Web Components 使用 srdb-* 前缀
- CSS 优化:提取共享样式,减少重复代码
- 清理遗留代码:删除未使用的方法和样式
2025-10-08 23:04:47 +08:00

130 lines
4.6 KiB
Makefile
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

.PHONY: help test test-verbose test-coverage test-race test-bench test-engine test-compaction test-btree test-memtable test-sstable test-wal test-version test-schema test-index test-database fmt fmt-check vet tidy verify clean build run-webui install-webui
# 默认目标
.DEFAULT_GOAL := help
# 颜色输出
GREEN := $(shell tput -Txterm setaf 2)
YELLOW := $(shell tput -Txterm setaf 3)
BLUE := $(shell tput -Txterm setaf 4)
RESET := $(shell tput -Txterm sgr0)
help: ## 显示帮助信息
@echo '$(BLUE)SRDB Makefile 命令:$(RESET)'
@echo ''
@grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | \
awk 'BEGIN {FS = ":.*?## "}; {printf " $(YELLOW)%-18s$(RESET) %s\n", $$1, $$2}'
@echo ''
test: ## 运行所有测试
@echo "$(GREEN)运行测试...$(RESET)"
@go test $$(go list ./... | grep -v /examples/)
@echo "$(GREEN)✓ 测试完成$(RESET)"
test-verbose: ## 运行测试(详细输出)
@echo "$(GREEN)运行测试(详细模式)...$(RESET)"
@go test -v $$(go list ./... | grep -v /examples/)
test-coverage: ## 运行测试并生成覆盖率报告
@echo "$(GREEN)运行测试并生成覆盖率报告...$(RESET)"
@go test -v -coverprofile=coverage.out $$(go list ./... | grep -v /examples/)
@go tool cover -html=coverage.out -o coverage.html
@echo "$(GREEN)✓ 覆盖率报告已生成: coverage.html$(RESET)"
test-race: ## 运行测试(启用竞态检测)
@echo "$(GREEN)运行测试(竞态检测)...$(RESET)"
@go test -race $$(go list ./... | grep -v /examples/)
@echo "$(GREEN)✓ 竞态检测完成$(RESET)"
test-bench: ## 运行基准测试
@echo "$(GREEN)运行基准测试...$(RESET)"
@go test -bench=. -benchmem $$(go list ./... | grep -v /examples/)
test-engine: ## 只运行 engine 测试
@echo "$(GREEN)运行 engine 测试...$(RESET)"
@go test -v -run TestEngine
test-compaction: ## 只运行 compaction 测试
@echo "$(GREEN)运行 compaction 测试...$(RESET)"
@go test -v -run TestCompaction
test-btree: ## 只运行 btree 测试
@echo "$(GREEN)运行 btree 测试...$(RESET)"
@go test -v -run TestBTree
test-memtable: ## 只运行 memtable 测试
@echo "$(GREEN)运行 memtable 测试...$(RESET)"
@go test -v -run TestMemTable
test-sstable: ## 只运行 sstable 测试
@echo "$(GREEN)运行 sstable 测试...$(RESET)"
@go test -v -run TestSST
test-wal: ## 只运行 wal 测试
@echo "$(GREEN)运行 wal 测试...$(RESET)"
@go test -v -run TestWAL
test-version: ## 只运行 version 测试
@echo "$(GREEN)运行 version 测试...$(RESET)"
@go test -v -run TestVersion
test-schema: ## 只运行 schema 测试
@echo "$(GREEN)运行 schema 测试...$(RESET)"
@go test -v -run TestSchema
test-index: ## 只运行 index 测试
@echo "$(GREEN)运行 index 测试...$(RESET)"
@go test -v -run TestIndex
test-database: ## 只运行 database 测试
@echo "$(GREEN)运行 database 测试...$(RESET)"
@go test -v -run TestDatabase
fmt: ## 格式化代码
@echo "$(GREEN)格式化代码...$(RESET)"
@go fmt ./...
@echo "$(GREEN)✓ 代码格式化完成$(RESET)"
fmt-check: ## 检查代码格式(不修改)
@echo "$(GREEN)检查代码格式...$(RESET)"
@test -z "$$(gofmt -l .)" || (echo "$(YELLOW)以下文件需要格式化:$(RESET)" && gofmt -l . && exit 1)
@echo "$(GREEN)✓ 代码格式正确$(RESET)"
vet: ## 运行 go vet 静态分析
@echo "$(GREEN)运行 go vet...$(RESET)"
@go vet $$(go list ./... | grep -v /examples/)
@echo "$(GREEN)✓ 静态分析完成$(RESET)"
tidy: ## 整理依赖
@echo "$(GREEN)整理依赖...$(RESET)"
@go mod tidy
@echo "$(GREEN)✓ 依赖整理完成$(RESET)"
verify: ## 验证依赖
@echo "$(GREEN)验证依赖...$(RESET)"
@go mod verify
@echo "$(GREEN)✓ 依赖验证完成$(RESET)"
build: ## 构建 webui 示例程序
@echo "$(GREEN)构建 webui 示例...$(RESET)"
@cd examples/webui && go build -o srdb-webui main.go
@echo "$(GREEN)✓ 构建完成: examples/webui/srdb-webui$(RESET)"
install-webui: ## 安装 webui 工具到 $GOPATH/bin
@echo "$(GREEN)安装 webui 工具...$(RESET)"
@cd examples/webui && go install
@echo "$(GREEN)✓ 已安装到 $(shell go env GOPATH)/bin/webui$(RESET)"
run-webui: ## 运行 webui 示例(默认端口 8080
@echo "$(GREEN)启动 webui 服务...$(RESET)"
@cd examples/webui && go run main.go webui -db ./data -addr :8080
clean: ## 清理测试文件和构建产物
@echo "$(GREEN)清理测试文件...$(RESET)"
@rm -f coverage.out coverage.html
@rm -f examples/webui/srdb-webui
@find . -type d -name "mydb*" -exec rm -rf {} + 2>/dev/null || true
@find . -type d -name "testdb*" -exec rm -rf {} + 2>/dev/null || true
@find . -type d -name "data" -exec rm -rf {} + 2>/dev/null || true
@echo "$(GREEN)✓ 清理完成$(RESET)"