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  }