Использование sqlx go для вставки записи в таблицу postgres с автоматической генерацией идентификатора c - PullRequest
0 голосов
/ 19 января 2020

Я использую sqlx для создания go API.

Я хочу вставить запись в таблицу с именем day.

. go struct соответствует следующему

type Day struct {
    ID      string         `db:"id" json:"id"`
    Dateday string         `db:"dateday" json:"dateday"`
    Nameday string         `db:"nameday" json:"nameday"`
    Holyday bool           `db:"holyday" json:"holyday"`
}

В конечной точке для создания Дня будут приниматься все поля, кроме ID через почтовый запрос

Какой метод следует использовать для взаимодействовать с моей БД, чтобы:

а) создать запись

б) не нужно самому передавать ID и давать команду postgres на автоматическое создание поля.

Оператор создания таблицы следующий:

CREATE TABLE IF NOT EXISTS "day" (
  "id" SERIAL PRIMARY KEY,
  "dateday" date NOT NULL,
  "nameday" varchar(10) NOT NULL,
  "holyday" boolean NOT NULL
);

1 Ответ

0 голосов
/ 19 января 2020

Я бы предложил переопределить метод MarshalJSON, как указано ниже:

func (r Day) MarshalJSON() ([]byte, error) {
    root := make(map[string]interface{})

    root["dateday"] = r.Dateday
    root["nameday"] = r.Nameday
    root["holyday"] = r.Holyday
    return json.Marshal(root)
}

Ссылка: https://golang.org/pkg/encoding/json/#example__customMarshalJSON

...