From c676532f80c288f546d8ea1a442a6bfc0e2e6498 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Carlos=20Nieto?= <jose.carlos@menteslibres.net> Date: Sun, 14 Sep 2014 16:05:41 -0500 Subject: [PATCH] Adding caching for Statement struct. --- util/sqlgen/statement.go | 30 ++++++++++++++++++++++++++++-- 1 file changed, 28 insertions(+), 2 deletions(-) diff --git a/util/sqlgen/statement.go b/util/sqlgen/statement.go index 0efd906a..b7b4ec47 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 } -- GitLab