fix: date parsing (#80)

This commit is contained in:
Ludvig Lundgren 2022-01-13 21:59:36 +01:00 committed by GitHub
parent d3c0b32199
commit 47031358b0
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 6 additions and 72 deletions

View file

@ -4,7 +4,6 @@ import (
"context" "context"
"database/sql" "database/sql"
"strings" "strings"
"time"
"github.com/lib/pq" "github.com/lib/pq"
"github.com/rs/zerolog/log" "github.com/rs/zerolog/log"
@ -36,9 +35,8 @@ func (r *FilterRepo) ListFilters() ([]domain.Filter, error) {
var f domain.Filter var f domain.Filter
var matchReleases, exceptReleases sql.NullString var matchReleases, exceptReleases sql.NullString
var createdAt, updatedAt string
if err := rows.Scan(&f.ID, &f.Enabled, &f.Name, &matchReleases, &exceptReleases, &createdAt, &updatedAt); err != nil { if err := rows.Scan(&f.ID, &f.Enabled, &f.Name, &matchReleases, &exceptReleases, &f.CreatedAt, &f.UpdatedAt); err != nil {
log.Error().Stack().Err(err).Msg("filters_list: error scanning data to struct") log.Error().Stack().Err(err).Msg("filters_list: error scanning data to struct")
} }
if err != nil { if err != nil {
@ -48,12 +46,6 @@ func (r *FilterRepo) ListFilters() ([]domain.Filter, error) {
f.MatchReleases = matchReleases.String f.MatchReleases = matchReleases.String
f.ExceptReleases = exceptReleases.String f.ExceptReleases = exceptReleases.String
ua, _ := time.Parse(time.RFC3339, updatedAt)
ca, _ := time.Parse(time.RFC3339, createdAt)
f.UpdatedAt = ua
f.CreatedAt = ca
filters = append(filters, f) filters = append(filters, f)
} }
if err := rows.Err(); err != nil { if err := rows.Err(); err != nil {
@ -78,9 +70,8 @@ func (r *FilterRepo) FindByID(filterID int) (*domain.Filter, error) {
var minSize, maxSize, matchReleases, exceptReleases, matchReleaseGroups, exceptReleaseGroups, freeleechPercent, shows, seasons, episodes, years, matchCategories, exceptCategories, matchUploaders, exceptUploaders, tags, exceptTags sql.NullString var minSize, maxSize, matchReleases, exceptReleases, matchReleaseGroups, exceptReleaseGroups, freeleechPercent, shows, seasons, episodes, years, matchCategories, exceptCategories, matchUploaders, exceptUploaders, tags, exceptTags sql.NullString
var useRegex, scene, freeleech sql.NullBool var useRegex, scene, freeleech sql.NullBool
var delay sql.NullInt32 var delay sql.NullInt32
var createdAt, updatedAt string
if err := row.Scan(&f.ID, &f.Enabled, &f.Name, &minSize, &maxSize, &delay, &matchReleases, &exceptReleases, &useRegex, &matchReleaseGroups, &exceptReleaseGroups, &scene, &freeleech, &freeleechPercent, &shows, &seasons, &episodes, pq.Array(&f.Resolutions), pq.Array(&f.Codecs), pq.Array(&f.Sources), pq.Array(&f.Containers), &years, &matchCategories, &exceptCategories, &matchUploaders, &exceptUploaders, &tags, &exceptTags, &createdAt, &updatedAt); err != nil { if err := row.Scan(&f.ID, &f.Enabled, &f.Name, &minSize, &maxSize, &delay, &matchReleases, &exceptReleases, &useRegex, &matchReleaseGroups, &exceptReleaseGroups, &scene, &freeleech, &freeleechPercent, &shows, &seasons, &episodes, pq.Array(&f.Resolutions), pq.Array(&f.Codecs), pq.Array(&f.Sources), pq.Array(&f.Containers), &years, &matchCategories, &exceptCategories, &matchUploaders, &exceptUploaders, &tags, &exceptTags, &f.CreatedAt, &f.UpdatedAt); err != nil {
log.Error().Stack().Err(err).Msgf("filter: %v : error scanning data to struct", filterID) log.Error().Stack().Err(err).Msgf("filter: %v : error scanning data to struct", filterID)
return nil, err return nil, err
} }
@ -107,47 +98,9 @@ func (r *FilterRepo) FindByID(filterID int) (*domain.Filter, error) {
f.Scene = scene.Bool f.Scene = scene.Bool
f.Freeleech = freeleech.Bool f.Freeleech = freeleech.Bool
updatedTime, _ := time.Parse(time.RFC3339, updatedAt)
createdTime, _ := time.Parse(time.RFC3339, createdAt)
f.UpdatedAt = updatedTime
f.CreatedAt = createdTime
return &f, nil return &f, nil
} }
// TODO remove
func (r *FilterRepo) FindFiltersForSite(site string) ([]domain.Filter, error) {
//r.db.lock.RLock()
//defer r.db.lock.RUnlock()
rows, err := r.db.handler.Query("SELECT id, enabled, name, match_releases, except_releases, created_at, updated_at FROM filter WHERE match_sites LIKE ?", site)
if err != nil {
log.Fatal().Err(err)
}
defer rows.Close()
var filters []domain.Filter
for rows.Next() {
var f domain.Filter
if err := rows.Scan(&f.ID, &f.Enabled, &f.Name, pq.Array(&f.MatchReleases), pq.Array(&f.ExceptReleases), &f.CreatedAt, &f.UpdatedAt); err != nil {
log.Error().Stack().Err(err).Msg("error scanning data to struct")
}
if err != nil {
return nil, err
}
filters = append(filters, f)
}
if err := rows.Err(); err != nil {
return nil, err
}
return filters, nil
}
// FindByIndexerIdentifier find active filters only // FindByIndexerIdentifier find active filters only
func (r *FilterRepo) FindByIndexerIdentifier(indexer string) ([]domain.Filter, error) { func (r *FilterRepo) FindByIndexerIdentifier(indexer string) ([]domain.Filter, error) {
//r.db.lock.RLock() //r.db.lock.RLock()
@ -204,9 +157,8 @@ func (r *FilterRepo) FindByIndexerIdentifier(indexer string) ([]domain.Filter, e
var minSize, maxSize, matchReleases, exceptReleases, matchReleaseGroups, exceptReleaseGroups, freeleechPercent, shows, seasons, episodes, years, matchCategories, exceptCategories, matchUploaders, exceptUploaders, tags, exceptTags sql.NullString var minSize, maxSize, matchReleases, exceptReleases, matchReleaseGroups, exceptReleaseGroups, freeleechPercent, shows, seasons, episodes, years, matchCategories, exceptCategories, matchUploaders, exceptUploaders, tags, exceptTags sql.NullString
var useRegex, scene, freeleech sql.NullBool var useRegex, scene, freeleech sql.NullBool
var delay sql.NullInt32 var delay sql.NullInt32
var createdAt, updatedAt string
if err := rows.Scan(&f.ID, &f.Enabled, &f.Name, &minSize, &maxSize, &delay, &matchReleases, &exceptReleases, &useRegex, &matchReleaseGroups, &exceptReleaseGroups, &scene, &freeleech, &freeleechPercent, &shows, &seasons, &episodes, pq.Array(&f.Resolutions), pq.Array(&f.Codecs), pq.Array(&f.Sources), pq.Array(&f.Containers), &years, &matchCategories, &exceptCategories, &matchUploaders, &exceptUploaders, &tags, &exceptTags, &createdAt, &updatedAt); err != nil { if err := rows.Scan(&f.ID, &f.Enabled, &f.Name, &minSize, &maxSize, &delay, &matchReleases, &exceptReleases, &useRegex, &matchReleaseGroups, &exceptReleaseGroups, &scene, &freeleech, &freeleechPercent, &shows, &seasons, &episodes, pq.Array(&f.Resolutions), pq.Array(&f.Codecs), pq.Array(&f.Sources), pq.Array(&f.Containers), &years, &matchCategories, &exceptCategories, &matchUploaders, &exceptUploaders, &tags, &exceptTags, &f.CreatedAt, &f.UpdatedAt); err != nil {
log.Error().Stack().Err(err).Msg("error scanning data to struct") log.Error().Stack().Err(err).Msg("error scanning data to struct")
return nil, err return nil, err
} }
@ -233,12 +185,6 @@ func (r *FilterRepo) FindByIndexerIdentifier(indexer string) ([]domain.Filter, e
f.Scene = scene.Bool f.Scene = scene.Bool
f.Freeleech = freeleech.Bool f.Freeleech = freeleech.Bool
updatedTime, _ := time.Parse(time.RFC3339, updatedAt)
createdTime, _ := time.Parse(time.RFC3339, createdAt)
f.UpdatedAt = updatedTime
f.CreatedAt = createdTime
filters = append(filters, f) filters = append(filters, f)
} }
if err := rows.Err(); err != nil { if err := rows.Err(); err != nil {

View file

@ -3,8 +3,6 @@ package database
import ( import (
"context" "context"
"database/sql" "database/sql"
"time"
sq "github.com/Masterminds/squirrel" sq "github.com/Masterminds/squirrel"
"github.com/lib/pq" "github.com/lib/pq"
"github.com/rs/zerolog/log" "github.com/rs/zerolog/log"
@ -53,7 +51,7 @@ func (repo *ReleaseRepo) StoreReleaseActionStatus(ctx context.Context, a *domain
Update("release_action_status"). Update("release_action_status").
Set("status", a.Status). Set("status", a.Status).
Set("rejections", pq.Array(a.Rejections)). Set("rejections", pq.Array(a.Rejections)).
Set("timestamp", time.Now().Format(time.RFC3339)). Set("timestamp", a.Timestamp).
Where("id = ?", a.ID). Where("id = ?", a.ID).
Where("release_id = ?", a.ReleaseID). Where("release_id = ?", a.ReleaseID).
ToSql() ToSql()
@ -142,9 +140,8 @@ func (repo *ReleaseRepo) Find(ctx context.Context, params domain.QueryParams) ([
var rls domain.Release var rls domain.Release
var indexer, filter sql.NullString var indexer, filter sql.NullString
var timestamp string
if err := rows.Scan(&rls.ID, &rls.FilterStatus, pq.Array(&rls.Rejections), &indexer, &filter, &rls.Protocol, &rls.Title, &rls.TorrentName, &rls.Size, &timestamp, &countItems); err != nil { if err := rows.Scan(&rls.ID, &rls.FilterStatus, pq.Array(&rls.Rejections), &indexer, &filter, &rls.Protocol, &rls.Title, &rls.TorrentName, &rls.Size, &rls.Timestamp, &countItems); err != nil {
log.Error().Stack().Err(err).Msg("release.find: error scanning data to struct") log.Error().Stack().Err(err).Msg("release.find: error scanning data to struct")
return res, 0, 0, err return res, 0, 0, err
} }
@ -152,9 +149,6 @@ func (repo *ReleaseRepo) Find(ctx context.Context, params domain.QueryParams) ([
rls.Indexer = indexer.String rls.Indexer = indexer.String
rls.FilterName = filter.String rls.FilterName = filter.String
ca, _ := time.Parse(time.RFC3339, timestamp)
rls.Timestamp = ca
// get action status // get action status
actionStatus, err := repo.GetActionStatusByReleaseID(ctx, rls.ID) actionStatus, err := repo.GetActionStatusByReleaseID(ctx, rls.ID)
if err != nil { if err != nil {
@ -206,16 +200,11 @@ func (repo *ReleaseRepo) GetActionStatusByReleaseID(ctx context.Context, release
for rows.Next() { for rows.Next() {
var rls domain.ReleaseActionStatus var rls domain.ReleaseActionStatus
var timestamp string if err := rows.Scan(&rls.ID, &rls.Status, &rls.Action, &rls.Type, pq.Array(&rls.Rejections), &rls.Timestamp); err != nil {
if err := rows.Scan(&rls.ID, &rls.Status, &rls.Action, &rls.Type, pq.Array(&rls.Rejections), &timestamp); err != nil {
log.Error().Stack().Err(err).Msg("release.find: error scanning data to struct") log.Error().Stack().Err(err).Msg("release.find: error scanning data to struct")
return res, err return res, err
} }
ca, _ := time.Parse(time.RFC3339, timestamp)
rls.Timestamp = ca
res = append(res, rls) res = append(res, rls)
} }

View file

@ -12,7 +12,6 @@ https://autodl-community.github.io/autodl-irssi/configuration/filter/
type FilterRepo interface { type FilterRepo interface {
FindByID(filterID int) (*Filter, error) FindByID(filterID int) (*Filter, error)
FindFiltersForSite(site string) ([]Filter, error)
FindByIndexerIdentifier(indexer string) ([]Filter, error) FindByIndexerIdentifier(indexer string) ([]Filter, error)
ListFilters() ([]Filter, error) ListFilters() ([]Filter, error)
Store(filter Filter) (*Filter, error) Store(filter Filter) (*Filter, error)