diff --git a/util/sqlgen/statement.go b/util/sqlgen/statement.go index 0efd906aad2518a82c5753959ce6914f77c6096c..b7b4ec472bcc2214f768b63cf854437307c8c002 100644 --- a/util/sqlgen/statement.go +++ b/util/sqlgen/statement.go @@ -1,5 +1,9 @@ package sqlgen +import ( + "strconv" +) + type Statement struct { Type Table @@ -29,8 +33,30 @@ type statement_s struct { Where string } +func (self Statement) Hash() string { + hash := `Statement(` + + strconv.Itoa(int(self.Type)) + `;` + + self.Table.Hash() + `;` + + self.Database.Hash() + `;` + + strconv.Itoa(int(self.Limit)) + `;` + + strconv.Itoa(int(self.Offset)) + `;` + + self.Columns.Hash() + `;` + + self.Values.Hash() + `;` + + self.ColumnValues.Hash() + `;` + + self.OrderBy.Hash() + `;` + + self.GroupBy.Hash() + `;` + + string(self.Extra) + `;` + + self.Where.Hash() + + `)` + return hash +} + func (self *Statement) Compile(layout *Template) (compiled string) { + if c, ok := layout.Read(self); ok { + return c + } + data := statement_s{ Table: self.Table.Compile(layout), Database: self.Database.Compile(layout), @@ -62,9 +88,9 @@ func (self *Statement) Compile(layout *Template) (compiled string) { compiled = mustParse(layout.UpdateLayout, data) case SqlInsert: compiled = mustParse(layout.InsertLayout, data) - default: - compiled = "" } + layout.Write(self, compiled) + return compiled }