package data import ( "database/sql" "errors" "time" ) type Upload struct { ID int `json:"id"` AddedAt time.Time `json:"-"` TwitchLogin string `json:"twitchlogin"` TwitchID string `json:"twitchid"` TwitchChannel string `json:"twitchchannel"` TwitchMessage string `json:"twitchmessage"` Filehoster string `json:"filehoster"` DownloadURL string `json:"downloadurl"` UploadURL string `json:"uploadurl"` Identifier string `json:"identifier"` } type UploadModel struct { DB *sql.DB } // Insert takes in a channel struct and inserts it into the database. func (u UploadModel) Insert(twitchLogin, twitchID, twitchChannel, twitchMessage, filehoster, downloadURL, identifier string) { query := ` INSERT INTO uploads(twitchlogin, twitchid, twitchchannel, twitchmessage, filehoster, downloadurl, uploadurl, identifier) VALUES ($1, $2, $3, $4, $5, $6, $7, $8) RETURNING id, added_at, identifier; ` args := []interface{}{ twitchLogin, twitchID, twitchChannel, twitchMessage, filehoster, downloadURL, "undefined", identifier, } // Execute the query returning the number of affected rows. result, err := u.DB.Exec(query, args...) if err != nil { return } // Check how many rows were affected. rowsAffected, err := result.RowsAffected() if err != nil { return } if rowsAffected == 0 { return } } func (u UploadModel) UpdateUploadURL(identifier, uploadURL string) { var id string query := ` UPDATE uploads SET uploadurl = $2 WHERE identifier = $1 RETURNING id` args := []interface{}{ identifier, uploadURL, } err := u.DB.QueryRow(query, args...).Scan(id) if err != nil { switch { case errors.Is(err, sql.ErrNoRows): return default: return } } }