package tracking import ( "text/template" "git.sr.ht/~cco/go-scopes/storage" ) const ( sql_table = ` {{- $tablename := or (and .schema (printf "%s.%s" .schema .tablename)) .tablename -}} {{- $json := or .params.jsonType "json" -}} create table if not exists {{ $tablename }} ( trackid {{ or .params.idType "integer" }} primary key, {{ range .headFields -}}{{ toLower . }} text default '', {{ end -}} timestamp timestamptz default current_timestamp, data {{ $json }} ); {{- range $i, $cols := .indexes }} create index idx_{{ $.tablename }}_{{ add1 $i }} on {{ $tablename }} ( {{- range $j, $c := $cols -}} {{- if ne $j 0 -}}, {{ end }}{{ toLower $c }} {{- end -}} ); {{- end }} create index idx_{{ $.tablename }}_ts on {{ $tablename }} (timestamp); ` sql_insert = ` {{- $tablename := or (and .schema (printf "%s.%s" .schema .tablename)) .tablename -}} insert into {{ $tablename }} ( {{- range $j, $c := .columns -}} {{- if ne $j 0 -}}, {{ end }}{{ toLower $c }} {{- end -}}) values ( {{- range $j, $c := .columns -}} {{- if ne $j 0 -}}, {{ end }}${{ add1 $j }} {{- end -}}) ` ) var SqlCreate, SqlInsert *template.Template func init() { SqlCreate = storage.Template("create_table", sql_table) SqlInsert = storage.Template("insert_track", sql_insert) }