Ajouter dbclient.DBClient.InsertPresence

This commit is contained in:
Victor Lacasse-Beaudoin 2023-09-16 23:06:24 -04:00
parent 91ee8738c6
commit bae70e1569

View file

@ -5,6 +5,7 @@ import (
"fmt" "fmt"
"git.agecem.com/agecem/bottin-ag/dbschema" "git.agecem.com/agecem/bottin-ag/dbschema"
"git.agecem.com/agecem/bottin-ag/dbstruct"
"github.com/jmoiron/sqlx" "github.com/jmoiron/sqlx"
) )
@ -44,3 +45,30 @@ func (d *DBClient) CreateTablesIfNotExist() error {
_, err := d.DB.Exec(dbschema.Schema) _, err := d.DB.Exec(dbschema.Schema)
return err return err
} }
/*
InsertPresence inserts a dbstruct.Presence into the database, returning the
values of the inserted presence and any error that occured.
*/
func (d *DBClient) InsertPresence(presence dbstruct.Presence) (dbstruct.Presence, error) {
var insertedPresence dbstruct.Presence
var rows *sqlx.Rows
rows, err := d.DB.NamedQuery(`
INSERT INTO presences (id, at, name, programme_id)
VALUES (:id, current_timestamp, :name, :programme_id)
RETURNING id, at, name, programme_id
`, presence)
if err != nil {
return insertedPresence, err
}
defer rows.Close()
for rows.Next() {
if err := rows.Scan(&insertedPresence.ID, &insertedPresence.At, &insertedPresence.Name, &insertedPresence.ProgrammeID); err != nil {
return insertedPresence, err
}
}
return insertedPresence, nil
}