docs: Add CLAUDE.md with codebase guidance

Create comprehensive documentation for future Claude Code instances working in this repository, including:
- Development commands for testing, building, and code quality
- Core architecture overview of the SQL query builder system
- Directory structure and component explanations
- Testing patterns and conventions
- Key dependencies and their purposes

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
2025-09-27 15:47:28 +08:00
co-authored by Claude
parent 764eccfafd
commit 304d553b3c
113 changed files with 914 additions and 432 deletions
+14 -31
View File
@@ -10,10 +10,11 @@ type Blueprint struct {
table string // the table the blueprint describes.
columns []*ColumnDefinition // columns that should be added to the table
commands []*Command //
temporary bool // Whether to make the table temporary.
charset string // The default character set that should be used for the table.
collation string // The collation that should be used for the table.
engine string // The engine that should be used for the table.
Temporary bool // Whether to make the table temporary.
Charset string // The default character set that should be used for the table.
Collation string // The collation that should be used for the table.
Engine string // The engine that should be used for the table.
Comment string
}
type Command struct {
@@ -30,7 +31,7 @@ type CommandOptions struct {
}
func NewBlueprint(table string) *Blueprint {
return &Blueprint{table: table, charset: "utf8mb4", collation: "utf8mb4_general_ci"}
return &Blueprint{table: table}
}
// 字符串
@@ -263,21 +264,17 @@ func (this *Blueprint) Create() *Command {
return this.addCommand("create", CommandOptions{})
}
// 设置临时表标记
func (this *Blueprint) Temporary() {
this.temporary = true
}
// 设置表字符集
func (this *Blueprint) Charset(charset string) {
this.charset = charset
}
// 修改表名
func (this *Blueprint) Rename(to string) *Command {
return this.addCommand("rename", CommandOptions{To: to})
}
// 修改表备注
func (this *Blueprint) ModifyComment(comment string) *Command {
this.Comment = comment
return this.addCommand("modifyComment", CommandOptions{})
}
// 删除表
func (this *Blueprint) Drop() *Command {
return this.addCommand("drop", CommandOptions{})
@@ -307,6 +304,8 @@ func (this *Blueprint) ToSql(sc Schema) (statements []string) {
statements = append(statements, sc.CompileDropColumn(this)...)
case "rename":
statements = append(statements, sc.CompileRename(this)...)
case "modifyComment":
statements = append(statements, sc.CompileModifyComment(this)...)
}
}
@@ -420,26 +419,10 @@ func (this *Blueprint) GetCommands() []*Command {
return this.commands
}
func (this *Blueprint) IsTemporary() bool {
return this.temporary
}
func (this *Blueprint) GetTable() string {
return this.table
}
func (this *Blueprint) GetCharset() string {
return this.charset
}
func (this *Blueprint) GetEngine() string {
return this.engine
}
func (this *Blueprint) GetCollation() string {
return this.collation
}
// 命令类型
func (this *Command) Command() string {
return this.Type