2020-02-09 21:25:33 +01:00
|
|
|
package models
|
|
|
|
|
2020-02-11 14:32:35 +01:00
|
|
|
import (
|
|
|
|
"database/sql"
|
|
|
|
"time"
|
2020-07-10 18:35:37 +02:00
|
|
|
|
|
|
|
"github.com/pkg/errors"
|
2020-02-11 14:32:35 +01:00
|
|
|
)
|
2020-02-09 21:25:33 +01:00
|
|
|
|
|
|
|
type ShareToken struct {
|
|
|
|
TokenID int
|
|
|
|
Value string
|
|
|
|
OwnerID int
|
|
|
|
Expire *time.Time
|
|
|
|
Password *string
|
|
|
|
AlbumID *int
|
2020-07-10 14:26:19 +02:00
|
|
|
MediaID *int
|
2020-02-09 21:25:33 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
func (share *ShareToken) Token() string {
|
|
|
|
return share.Value
|
|
|
|
}
|
|
|
|
|
|
|
|
func (share *ShareToken) ID() int {
|
|
|
|
return share.TokenID
|
|
|
|
}
|
2020-02-11 14:32:35 +01:00
|
|
|
|
|
|
|
func NewShareTokenFromRow(row *sql.Row) (*ShareToken, error) {
|
|
|
|
token := ShareToken{}
|
|
|
|
|
2020-07-10 14:26:19 +02:00
|
|
|
if err := row.Scan(&token.TokenID, &token.Value, &token.OwnerID, &token.Expire, &token.Password, &token.AlbumID, &token.MediaID); err != nil {
|
2020-07-10 18:35:37 +02:00
|
|
|
return nil, errors.Wrap(err, "failed to scan share token from database")
|
2020-02-11 14:32:35 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
return &token, nil
|
|
|
|
}
|
|
|
|
|
|
|
|
func NewShareTokensFromRows(rows *sql.Rows) ([]*ShareToken, error) {
|
|
|
|
tokens := make([]*ShareToken, 0)
|
|
|
|
|
|
|
|
for rows.Next() {
|
|
|
|
var token ShareToken
|
2020-07-10 14:26:19 +02:00
|
|
|
if err := rows.Scan(&token.TokenID, &token.Value, &token.OwnerID, &token.Expire, &token.Password, &token.AlbumID, &token.MediaID); err != nil {
|
2020-07-10 18:35:37 +02:00
|
|
|
return nil, errors.Wrap(err, "failed to scan share tokens from database")
|
2020-02-11 14:32:35 +01:00
|
|
|
}
|
|
|
|
tokens = append(tokens, &token)
|
|
|
|
}
|
|
|
|
|
2020-02-28 20:57:46 +01:00
|
|
|
rows.Close()
|
|
|
|
|
2020-02-11 14:32:35 +01:00
|
|
|
return tokens, nil
|
|
|
|
}
|