|
|
|
@ -1,7 +1,6 @@
|
|
|
|
|
package main |
|
|
|
|
|
|
|
|
|
import ( |
|
|
|
|
"bytes" |
|
|
|
|
"database/sql" |
|
|
|
|
"errors" |
|
|
|
|
"fmt" |
|
|
|
@ -99,8 +98,9 @@ func (a *goBlog) checkPost(p *post) (err error) {
|
|
|
|
|
if err != nil { |
|
|
|
|
return errors.New("failed to parse location template") |
|
|
|
|
} |
|
|
|
|
var pathBuffer bytes.Buffer |
|
|
|
|
err = pathTmpl.Execute(&pathBuffer, map[string]interface{}{ |
|
|
|
|
pathBuffer := bufferpool.Get() |
|
|
|
|
defer bufferpool.Put(pathBuffer) |
|
|
|
|
err = pathTmpl.Execute(pathBuffer, map[string]interface{}{ |
|
|
|
|
"BlogPath": a.getRelativePath(p.Blog, ""), |
|
|
|
|
"Year": published.Year(), |
|
|
|
|
"Month": int(published.Month()), |
|
|
|
@ -171,7 +171,8 @@ func (db *database) savePost(p *post, o *postCreationOptions) error {
|
|
|
|
|
db.pcm.Lock() |
|
|
|
|
defer db.pcm.Unlock() |
|
|
|
|
// Build SQL
|
|
|
|
|
var sqlBuilder strings.Builder |
|
|
|
|
sqlBuilder := bufferpool.Get() |
|
|
|
|
defer bufferpool.Put(sqlBuilder) |
|
|
|
|
var sqlArgs = []interface{}{dbNoCache} |
|
|
|
|
// Start transaction
|
|
|
|
|
sqlBuilder.WriteString("begin;") |
|
|
|
@ -294,7 +295,8 @@ func (db *database) replacePostParam(path, param string, values []string) error
|
|
|
|
|
db.pcm.Lock() |
|
|
|
|
defer db.pcm.Unlock() |
|
|
|
|
// Build SQL
|
|
|
|
|
var sqlBuilder strings.Builder |
|
|
|
|
sqlBuilder := bufferpool.Get() |
|
|
|
|
defer bufferpool.Put(sqlBuilder) |
|
|
|
|
var sqlArgs = []interface{}{dbNoCache} |
|
|
|
|
// Start transaction
|
|
|
|
|
sqlBuilder.WriteString("begin;") |
|
|
|
@ -343,7 +345,8 @@ type postsRequestConfig struct {
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
func buildPostsQuery(c *postsRequestConfig, selection string) (query string, args []interface{}) { |
|
|
|
|
var queryBuilder strings.Builder |
|
|
|
|
queryBuilder := bufferpool.Get() |
|
|
|
|
defer bufferpool.Put(queryBuilder) |
|
|
|
|
// Selection
|
|
|
|
|
queryBuilder.WriteString("select ") |
|
|
|
|
queryBuilder.WriteString(selection) |
|
|
|
@ -459,7 +462,8 @@ func (d *database) loadPostParameters(posts []*post, parameters ...string) (err
|
|
|
|
|
} |
|
|
|
|
// Build query
|
|
|
|
|
sqlArgs := make([]interface{}, 0) |
|
|
|
|
var queryBuilder strings.Builder |
|
|
|
|
queryBuilder := bufferpool.Get() |
|
|
|
|
defer bufferpool.Put(queryBuilder) |
|
|
|
|
queryBuilder.WriteString("select path, parameter, value from post_parameters where") |
|
|
|
|
// Paths
|
|
|
|
|
queryBuilder.WriteString(" path in (") |
|
|
|
|