code: func ExecuteSQLFile(filename string, args ...string) fn {
  	return func(db *sql.Tx) error {
  		data, err := Asset(filename)
  		if err != nil {
  			return errs.Wrapf(err, "failed to find filename: %s", filename)
  		}
  
  		if len(args) > 0 {
  			tmpl, err := template.New("sql").Parse(string(data))
  			if err != nil {
  				return errs.Wrapf(err, "failed to parse SQL template in file %s", filename)
  			}
  			var sqlScript bytes.Buffer
  			writer := bufio.NewWriter(&sqlScript)
  			err = tmpl.Execute(writer, args)
  			if err != nil {
  				return errs.Wrapf(err, "failed to execute SQL template in file %s", filename)
  			}
  			// We need to flush the content of the writer
  			writer.Flush()
  			_, err = db.Exec(sqlScript.String())
  			if err != nil {
  				log.Error(context.Background(), map[string]interface{}{"err": err}, "failed to execute this query in file %s: \n\n%s\n\n", filename, sqlScript.String())
  			}
  		} else {
  			_, err = db.Exec(string(data))
  			if err != nil {
  				log.Error(context.Background(), map[string]interface{}{"err": err}, "failed to execute this query in file: %s \n\n%s\n\n", filename, string(data))
  			}
  		}
  
  		return errs.WithStack(err)
  	}
  }
docs: // ExecuteSQLFile loads the given filename from the packaged SQL files and
  // executes it on the given database. Golang text/template module is used
  // to handle all the optional arguments passed to the sql files