chore: fix timestamp type in postgres

This commit is contained in:
Steven
2023-12-09 23:19:57 +08:00
parent c50f4f4cb4
commit d275713aff
9 changed files with 51 additions and 80 deletions

View File

@ -3,7 +3,6 @@ package postgres
import (
"context"
"database/sql"
"encoding/binary"
"fmt"
"strings"
@ -30,12 +29,12 @@ func (d *DB) CreateMemo(ctx context.Context, create *store.Memo) (*store.Memo, e
if create.CreatedTs != 0 {
builder = builder.Columns("created_ts")
values = append(values, squirrel.Expr("to_timestamp(?)", create.CreatedTs))
values = append(values, create.CreatedTs)
}
if create.UpdatedTs != 0 {
builder = builder.Columns("updated_ts")
values = append(values, squirrel.Expr("to_timestamp(?)", create.UpdatedTs))
values = append(values, create.UpdatedTs)
}
if create.RowStatus != "" {
@ -78,8 +77,8 @@ func (d *DB) ListMemos(ctx context.Context, find *store.FindMemo) ([]*store.Memo
builder := squirrel.Select(
"memo.id AS id",
"memo.creator_id AS creator_id",
"EXTRACT(EPOCH FROM memo.created_ts) AS created_ts",
"EXTRACT(EPOCH FROM memo.updated_ts) AS updated_ts",
"memo.created_ts AS created_ts",
"memo.updated_ts AS updated_ts",
"memo.row_status AS row_status",
"memo.content AS content",
"memo.visibility AS visibility",
@ -101,10 +100,10 @@ func (d *DB) ListMemos(ctx context.Context, find *store.FindMemo) ([]*store.Memo
builder = builder.Where("memo.row_status = ?", *v)
}
if v := find.CreatedTsBefore; v != nil {
builder = builder.Where("EXTRACT(EPOCH FROM memo.created_ts) < ?", *v)
builder = builder.Where("memo.created_ts < ?", *v)
}
if v := find.CreatedTsAfter; v != nil {
builder = builder.Where("EXTRACT(EPOCH FROM memo.created_ts) > ?", *v)
builder = builder.Where("memo.created_ts > ?", *v)
}
if v := find.Pinned; v != nil {
builder = builder.Where("memo_organizer.pinned = 1")
@ -158,14 +157,13 @@ func (d *DB) ListMemos(ctx context.Context, find *store.FindMemo) ([]*store.Memo
// Process the result set
list := make([]*store.Memo, 0)
updatedTsPlaceHolder, createdTsPlaceHolder := make([]uint8, 8), make([]uint8, 8)
for rows.Next() {
var memo store.Memo
if err := rows.Scan(
&memo.ID,
&memo.CreatorID,
&createdTsPlaceHolder,
&updatedTsPlaceHolder,
&memo.CreatedTs,
&memo.UpdatedTs,
&memo.RowStatus,
&memo.Content,
&memo.Visibility,
@ -174,10 +172,6 @@ func (d *DB) ListMemos(ctx context.Context, find *store.FindMemo) ([]*store.Memo
return nil, err
}
// Convert the timestamps from Postgres to Go
memo.CreatedTs = int64(binary.BigEndian.Uint64(createdTsPlaceHolder))
memo.UpdatedTs = int64(binary.BigEndian.Uint64(updatedTsPlaceHolder))
list = append(list, &memo)
}
@ -209,10 +203,10 @@ func (d *DB) UpdateMemo(ctx context.Context, update *store.UpdateMemo) error {
// Conditionally add set clauses
if v := update.CreatedTs; v != nil {
builder = builder.Set("created_ts", squirrel.Expr("to_timestamp(?)", *v))
builder = builder.Set("created_ts", *v)
}
if v := update.UpdatedTs; v != nil {
builder = builder.Set("updated_ts", squirrel.Expr("to_timestamp(?)", *v))
builder = builder.Set("updated_ts", *v)
}
if v := update.RowStatus; v != nil {
builder = builder.Set("row_status", *v)