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:
+27
-14
@@ -1,10 +1,10 @@
|
||||
package db
|
||||
|
||||
import (
|
||||
"git.fsdpf.net/go/db/v2/exec"
|
||||
"git.fsdpf.net/go/db/v2/exp"
|
||||
"git.fsdpf.net/go/db/v2/internal/errors"
|
||||
"git.fsdpf.net/go/db/v2/internal/sb"
|
||||
"git.fsdpf.net/go/db/exec"
|
||||
"git.fsdpf.net/go/db/exp"
|
||||
"git.fsdpf.net/go/db/internal/errors"
|
||||
"git.fsdpf.net/go/db/internal/sb"
|
||||
)
|
||||
|
||||
var ErrBadFromArgument = errors.New("unsupported DeleteDataset#From argument, a string or identifier expression is required")
|
||||
@@ -15,6 +15,7 @@ type DeleteDataset struct {
|
||||
isPrepared prepared
|
||||
queryFactory exec.QueryFactory
|
||||
err error
|
||||
hooks exec.Hooks
|
||||
}
|
||||
|
||||
// used internally by database to create a database with a specific adapter
|
||||
@@ -87,6 +88,7 @@ func (dd *DeleteDataset) copy(clauses exp.DeleteClauses) *DeleteDataset {
|
||||
isPrepared: dd.isPrepared,
|
||||
queryFactory: dd.queryFactory,
|
||||
err: dd.err,
|
||||
hooks: dd.hooks,
|
||||
}
|
||||
}
|
||||
|
||||
@@ -119,14 +121,16 @@ func (dd *DeleteDataset) WithRecursive(name string, subquery exp.Expression) *De
|
||||
// Dataset: Will be added as a sub select. If the Dataset is not aliased it will automatically be aliased
|
||||
// LiteralExpression: (See Literal) Will use the literal SQL
|
||||
func (dd *DeleteDataset) From(table interface{}) *DeleteDataset {
|
||||
switch t := table.(type) {
|
||||
case exp.IdentifierExpression:
|
||||
return dd.copy(dd.clauses.SetFrom(t))
|
||||
case string:
|
||||
return dd.copy(dd.clauses.SetFrom(exp.ParseIdentifier(t)))
|
||||
default:
|
||||
panic(ErrBadFromArgument)
|
||||
}
|
||||
return dd.copy(dd.clauses.SetFrom(exp.NewColumnListExpression(table)))
|
||||
|
||||
// switch t := table.(type) {
|
||||
// case exp.IdentifierExpression:
|
||||
// return dd.copy(dd.clauses.SetFrom(t))
|
||||
// case string:
|
||||
// return dd.copy(dd.clauses.SetFrom(exp.ParseIdentifier(t)))
|
||||
// default:
|
||||
// panic(ErrBadFromArgument)
|
||||
// }
|
||||
}
|
||||
|
||||
// Adds a WHERE clause. See examples.
|
||||
@@ -232,8 +236,17 @@ func (dd *DeleteDataset) ReturnsColumns() bool {
|
||||
// db.Delete("test").Exec()
|
||||
//
|
||||
// See Dataset#ToUpdateSQL for arguments
|
||||
func (dd *DeleteDataset) Executor() exec.QueryExecutor {
|
||||
return dd.queryFactory.FromSQLBuilder(dd.deleteSQLBuilder())
|
||||
func (dd *DeleteDataset) Executor() (executor exec.QueryExecutor) {
|
||||
if dd.hooks != nil {
|
||||
dd.SetError(dd.hooks.Before(dd))
|
||||
}
|
||||
executor = dd.queryFactory.FromSQLBuilder(dd.deleteSQLBuilder())
|
||||
if dd.hooks != nil {
|
||||
executor.Hook(func(result interface{}) error {
|
||||
return dd.hooks.After(dd, result)
|
||||
})
|
||||
}
|
||||
return executor
|
||||
}
|
||||
|
||||
func (dd *DeleteDataset) deleteSQLBuilder() sb.SQLBuilder {
|
||||
|
||||
Reference in New Issue
Block a user