github.com/benoitkugler/goacve@v0.0.0-20201217100549-151ce6e55dc8/server/vote/scans.go (about) 1 // DON'T EDIT - automatically generated by structgen // 2 3 package vote 4 5 import ( 6 "database/sql" 7 8 "github.com/lib/pq" 9 ) 10 11 type scanner interface { 12 Scan(...interface{}) error 13 } 14 15 // DB groups transaction like objects 16 type DB interface { 17 Exec(query string, args ...interface{}) (sql.Result, error) 18 Query(query string, args ...interface{}) (*sql.Rows, error) 19 QueryRow(query string, args ...interface{}) *sql.Row 20 Prepare(query string) (*sql.Stmt, error) 21 } 22 23 func scanOneCandidat(row scanner) (Candidat, error) { 24 var s Candidat 25 err := row.Scan( 26 &s.Id, 27 &s.IdVote, 28 &s.Label, 29 ) 30 return s, err 31 } 32 33 func ScanCandidat(row *sql.Row) (Candidat, error) { 34 return scanOneCandidat(row) 35 } 36 37 func SelectAllCandidats(tx DB) (Candidats, error) { 38 rows, err := tx.Query("SELECT * FROM candidats") 39 if err != nil { 40 return nil, err 41 } 42 return ScanCandidats(rows) 43 } 44 45 // SelectCandidat returns the entry matching id. 46 func SelectCandidat(tx DB, id int64) (Candidat, error) { 47 row := tx.QueryRow("SELECT * FROM candidats WHERE id = $1", id) 48 return ScanCandidat(row) 49 } 50 51 type Candidats map[int64]Candidat 52 53 func (m Candidats) Ids() Ids { 54 out := make(Ids, 0, len(m)) 55 for i := range m { 56 out = append(out, i) 57 } 58 return out 59 } 60 61 func ScanCandidats(rs *sql.Rows) (Candidats, error) { 62 var ( 63 s Candidat 64 err error 65 ) 66 defer func() { 67 errClose := rs.Close() 68 if err == nil { 69 err = errClose 70 } 71 }() 72 structs := make(Candidats, 16) 73 for rs.Next() { 74 s, err = scanOneCandidat(rs) 75 if err != nil { 76 return nil, err 77 } 78 structs[s.Id] = s 79 } 80 if err = rs.Err(); err != nil { 81 return nil, err 82 } 83 return structs, nil 84 } 85 86 // Insert Candidat in the database and returns the item with id filled. 87 func (item Candidat) Insert(tx DB) (out Candidat, err error) { 88 row := tx.QueryRow(`INSERT INTO candidats ( 89 id_vote,label 90 ) VALUES ( 91 $1,$2 92 ) RETURNING 93 id,id_vote,label; 94 `, item.IdVote, item.Label) 95 return ScanCandidat(row) 96 } 97 98 // Update Candidat in the database and returns the new version. 99 func (item Candidat) Update(tx DB) (out Candidat, err error) { 100 row := tx.QueryRow(`UPDATE candidats SET ( 101 id_vote,label 102 ) = ( 103 $2,$3 104 ) WHERE id = $1 RETURNING 105 id,id_vote,label; 106 `, item.Id, item.IdVote, item.Label) 107 return ScanCandidat(row) 108 } 109 110 // Deletes Candidat in the database and returns the item. 111 // Only the field 'Id' is used. 112 func (item Candidat) Delete(tx DB) (Candidat, error) { 113 row := tx.QueryRow("DELETE FROM candidats WHERE id = $1 RETURNING *;", item.Id) 114 return ScanCandidat(row) 115 } 116 117 func scanOneVote(row scanner) (Vote, error) { 118 var s Vote 119 err := row.Scan( 120 &s.Id, 121 &s.Nom, 122 &s.Description, 123 &s.IsQCM, 124 &s.IsLocked, 125 ) 126 return s, err 127 } 128 129 func ScanVote(row *sql.Row) (Vote, error) { 130 return scanOneVote(row) 131 } 132 133 func SelectAllVotes(tx DB) (Votes, error) { 134 rows, err := tx.Query("SELECT * FROM votes") 135 if err != nil { 136 return nil, err 137 } 138 return ScanVotes(rows) 139 } 140 141 // SelectVote returns the entry matching id. 142 func SelectVote(tx DB, id int64) (Vote, error) { 143 row := tx.QueryRow("SELECT * FROM votes WHERE id = $1", id) 144 return ScanVote(row) 145 } 146 147 type Votes map[int64]Vote 148 149 func (m Votes) Ids() Ids { 150 out := make(Ids, 0, len(m)) 151 for i := range m { 152 out = append(out, i) 153 } 154 return out 155 } 156 157 func ScanVotes(rs *sql.Rows) (Votes, error) { 158 var ( 159 s Vote 160 err error 161 ) 162 defer func() { 163 errClose := rs.Close() 164 if err == nil { 165 err = errClose 166 } 167 }() 168 structs := make(Votes, 16) 169 for rs.Next() { 170 s, err = scanOneVote(rs) 171 if err != nil { 172 return nil, err 173 } 174 structs[s.Id] = s 175 } 176 if err = rs.Err(); err != nil { 177 return nil, err 178 } 179 return structs, nil 180 } 181 182 // Insert Vote in the database and returns the item with id filled. 183 func (item Vote) Insert(tx DB) (out Vote, err error) { 184 row := tx.QueryRow(`INSERT INTO votes ( 185 nom,description,is_qcm,is_locked 186 ) VALUES ( 187 $1,$2,$3,$4 188 ) RETURNING 189 id,nom,description,is_qcm,is_locked; 190 `, item.Nom, item.Description, item.IsQCM, item.IsLocked) 191 return ScanVote(row) 192 } 193 194 // Update Vote in the database and returns the new version. 195 func (item Vote) Update(tx DB) (out Vote, err error) { 196 row := tx.QueryRow(`UPDATE votes SET ( 197 nom,description,is_qcm,is_locked 198 ) = ( 199 $2,$3,$4,$5 200 ) WHERE id = $1 RETURNING 201 id,nom,description,is_qcm,is_locked; 202 `, item.Id, item.Nom, item.Description, item.IsQCM, item.IsLocked) 203 return ScanVote(row) 204 } 205 206 // Deletes Vote in the database and returns the item. 207 // Only the field 'Id' is used. 208 func (item Vote) Delete(tx DB) (Vote, error) { 209 row := tx.QueryRow("DELETE FROM votes WHERE id = $1 RETURNING *;", item.Id) 210 return ScanVote(row) 211 } 212 213 func scanOneVotePersonne(row scanner) (VotePersonne, error) { 214 var s VotePersonne 215 err := row.Scan( 216 &s.IdVote, 217 &s.IdPersonne, 218 &s.Time, 219 ) 220 return s, err 221 } 222 223 func ScanVotePersonne(row *sql.Row) (VotePersonne, error) { 224 return scanOneVotePersonne(row) 225 } 226 227 func SelectAllVotePersonnes(tx DB) (VotePersonnes, error) { 228 rows, err := tx.Query("SELECT * FROM vote_personnes") 229 if err != nil { 230 return nil, err 231 } 232 return ScanVotePersonnes(rows) 233 } 234 235 type VotePersonnes []VotePersonne 236 237 func ScanVotePersonnes(rs *sql.Rows) (VotePersonnes, error) { 238 var ( 239 s VotePersonne 240 err error 241 ) 242 defer func() { 243 errClose := rs.Close() 244 if err == nil { 245 err = errClose 246 } 247 }() 248 structs := make(VotePersonnes, 0, 16) 249 for rs.Next() { 250 s, err = scanOneVotePersonne(rs) 251 if err != nil { 252 return nil, err 253 } 254 structs = append(structs, s) 255 } 256 if err = rs.Err(); err != nil { 257 return nil, err 258 } 259 return structs, nil 260 } 261 262 func SelectVotePersonneByIdVote(tx DB, idVotes ...int64) (VotePersonnes, error) { 263 rows, err := tx.Query("SELECT * FROM vote_personnes WHERE id_vote = ANY($1)", pq.Int64Array(idVotes)) 264 if err != nil { 265 return nil, err 266 } 267 return ScanVotePersonnes(rows) 268 } 269 270 func SelectVotePersonneByIdPersonne(tx DB, idPersonnes ...int64) (VotePersonnes, error) { 271 rows, err := tx.Query("SELECT * FROM vote_personnes WHERE id_personne = ANY($1)", pq.Int64Array(idPersonnes)) 272 if err != nil { 273 return nil, err 274 } 275 return ScanVotePersonnes(rows) 276 } 277 278 // ByIdVote returns a map with 'IdVote' as keys. 279 // Collision may happen without uniqueness constraint. 280 func (items VotePersonnes) ByIdVote() map[int64]VotePersonne { 281 out := make(map[int64]VotePersonne, len(items)) 282 for _, target := range items { 283 out[target.IdVote] = target 284 } 285 return out 286 } 287 288 // ByIdPersonne returns a map with 'IdPersonne' as keys. 289 // Collision may happen without uniqueness constraint. 290 func (items VotePersonnes) ByIdPersonne() map[int64]VotePersonne { 291 out := make(map[int64]VotePersonne, len(items)) 292 for _, target := range items { 293 out[target.IdPersonne] = target 294 } 295 return out 296 } 297 298 // Insert the links VotePersonne in the database. 299 func InsertManyVotePersonnes(tx DB, items ...VotePersonne) error { 300 if len(items) == 0 { 301 return nil 302 } 303 304 stmt, err := tx.Prepare(pq.CopyIn("vote_personnes", 305 "id_vote", "id_personne", "time", 306 )) 307 if err != nil { 308 return err 309 } 310 311 for _, item := range items { 312 _, err = stmt.Exec(item.IdVote, item.IdPersonne, item.Time) 313 if err != nil { 314 return err 315 } 316 } 317 318 if _, err = stmt.Exec(); err != nil { 319 return err 320 } 321 322 if err = stmt.Close(); err != nil { 323 return err 324 } 325 return nil 326 } 327 328 // Delete the link VotePersonne in the database. 329 // Only the 'IdVote' 'IdPersonne' fields are used. 330 func (item VotePersonne) Delete(tx DB) error { 331 _, err := tx.Exec(`DELETE FROM vote_personnes WHERE 332 id_vote = $1 AND id_personne = $2;`, item.IdVote, item.IdPersonne) 333 return err 334 } 335 336 func scanOneVotePersonneCandidat(row scanner) (VotePersonneCandidat, error) { 337 var s VotePersonneCandidat 338 err := row.Scan( 339 &s.IdVote, 340 &s.IdPersonne, 341 &s.IdCandidat, 342 ) 343 return s, err 344 } 345 346 func ScanVotePersonneCandidat(row *sql.Row) (VotePersonneCandidat, error) { 347 return scanOneVotePersonneCandidat(row) 348 } 349 350 func SelectAllVotePersonneCandidats(tx DB) (VotePersonneCandidats, error) { 351 rows, err := tx.Query("SELECT * FROM vote_personne_candidats") 352 if err != nil { 353 return nil, err 354 } 355 return ScanVotePersonneCandidats(rows) 356 } 357 358 type VotePersonneCandidats []VotePersonneCandidat 359 360 func ScanVotePersonneCandidats(rs *sql.Rows) (VotePersonneCandidats, error) { 361 var ( 362 s VotePersonneCandidat 363 err error 364 ) 365 defer func() { 366 errClose := rs.Close() 367 if err == nil { 368 err = errClose 369 } 370 }() 371 structs := make(VotePersonneCandidats, 0, 16) 372 for rs.Next() { 373 s, err = scanOneVotePersonneCandidat(rs) 374 if err != nil { 375 return nil, err 376 } 377 structs = append(structs, s) 378 } 379 if err = rs.Err(); err != nil { 380 return nil, err 381 } 382 return structs, nil 383 } 384 385 func SelectVotePersonneCandidatByIdVote(tx DB, idVotes ...int64) (VotePersonneCandidats, error) { 386 rows, err := tx.Query("SELECT * FROM vote_personne_candidats WHERE id_vote = ANY($1)", pq.Int64Array(idVotes)) 387 if err != nil { 388 return nil, err 389 } 390 return ScanVotePersonneCandidats(rows) 391 } 392 393 func SelectVotePersonneCandidatByIdPersonne(tx DB, idPersonnes ...int64) (VotePersonneCandidats, error) { 394 rows, err := tx.Query("SELECT * FROM vote_personne_candidats WHERE id_personne = ANY($1)", pq.Int64Array(idPersonnes)) 395 if err != nil { 396 return nil, err 397 } 398 return ScanVotePersonneCandidats(rows) 399 } 400 401 func SelectVotePersonneCandidatByIdCandidat(tx DB, idCandidats ...int64) (VotePersonneCandidats, error) { 402 rows, err := tx.Query("SELECT * FROM vote_personne_candidats WHERE id_candidat = ANY($1)", pq.Int64Array(idCandidats)) 403 if err != nil { 404 return nil, err 405 } 406 return ScanVotePersonneCandidats(rows) 407 } 408 409 // ByIdVote returns a map with 'IdVote' as keys. 410 // Collision may happen without uniqueness constraint. 411 func (items VotePersonneCandidats) ByIdVote() map[int64]VotePersonneCandidat { 412 out := make(map[int64]VotePersonneCandidat, len(items)) 413 for _, target := range items { 414 out[target.IdVote] = target 415 } 416 return out 417 } 418 419 // ByIdPersonne returns a map with 'IdPersonne' as keys. 420 // Collision may happen without uniqueness constraint. 421 func (items VotePersonneCandidats) ByIdPersonne() map[int64]VotePersonneCandidat { 422 out := make(map[int64]VotePersonneCandidat, len(items)) 423 for _, target := range items { 424 out[target.IdPersonne] = target 425 } 426 return out 427 } 428 429 // ByIdCandidat returns a map with 'IdCandidat' as keys. 430 // Collision may happen without uniqueness constraint. 431 func (items VotePersonneCandidats) ByIdCandidat() map[int64]VotePersonneCandidat { 432 out := make(map[int64]VotePersonneCandidat, len(items)) 433 for _, target := range items { 434 out[target.IdCandidat] = target 435 } 436 return out 437 } 438 439 // Insert the links VotePersonneCandidat in the database. 440 func InsertManyVotePersonneCandidats(tx DB, items ...VotePersonneCandidat) error { 441 if len(items) == 0 { 442 return nil 443 } 444 445 stmt, err := tx.Prepare(pq.CopyIn("vote_personne_candidats", 446 "id_vote", "id_personne", "id_candidat", 447 )) 448 if err != nil { 449 return err 450 } 451 452 for _, item := range items { 453 _, err = stmt.Exec(item.IdVote, item.IdPersonne, item.IdCandidat) 454 if err != nil { 455 return err 456 } 457 } 458 459 if _, err = stmt.Exec(); err != nil { 460 return err 461 } 462 463 if err = stmt.Close(); err != nil { 464 return err 465 } 466 return nil 467 } 468 469 // Delete the link VotePersonneCandidat in the database. 470 // Only the 'IdVote' 'IdPersonne' 'IdCandidat' fields are used. 471 func (item VotePersonneCandidat) Delete(tx DB) error { 472 _, err := tx.Exec(`DELETE FROM vote_personne_candidats WHERE 473 id_vote = $1 AND id_personne = $2 AND id_candidat = $3;`, item.IdVote, item.IdPersonne, item.IdCandidat) 474 return err 475 }