Introduce models.Entity type

This commit is contained in:
Philipp Wolfer 2023-12-10 14:22:38 +01:00
parent a59a542967
commit c4587b80af
No known key found for this signature in database
GPG key ID: 8FDF744D4919943B
6 changed files with 18 additions and 9 deletions

View file

@ -76,7 +76,7 @@ func TestGetBackends(t *testing.T) {
} }
// If we got here the "dump" backend was not included // If we got here the "dump" backend was not included
t.Errorf("GetBackends() did not return expected bacend \"dump\"") t.Errorf("GetBackends() did not return expected backend \"dump\"")
} }
func TestImplementsInterfaces(t *testing.T) { func TestImplementsInterfaces(t *testing.T) {

View file

@ -38,7 +38,7 @@ func NewTransferCmd[
]( ](
cmd *cobra.Command, cmd *cobra.Command,
db *storage.Database, db *storage.Database,
entity string, entity models.Entity,
source string, source string,
target string, target string,
) (TransferCmd[E, I, R], error) { ) (TransferCmd[E, I, R], error) {
@ -57,7 +57,7 @@ func NewTransferCmd[
type TransferCmd[E models.Backend, I models.ImportBackend, R models.ListensResult | models.LovesResult] struct { type TransferCmd[E models.Backend, I models.ImportBackend, R models.ListensResult | models.LovesResult] struct {
cmd *cobra.Command cmd *cobra.Command
db *storage.Database db *storage.Database
entity string entity models.Entity
sourceName string sourceName string
targetName string targetName string
ExpBackend E ExpBackend E

View file

@ -27,6 +27,12 @@ import (
) )
type MBID string type MBID string
type Entity string
const (
Listens Entity = "listens"
Loves Entity = "loves"
)
type AdditionalInfo map[string]any type AdditionalInfo map[string]any

View file

@ -24,6 +24,7 @@ import (
"time" "time"
"github.com/glebarez/sqlite" "github.com/glebarez/sqlite"
"go.uploadedlobster.com/scotty/internal/models"
"golang.org/x/oauth2" "golang.org/x/oauth2"
"gorm.io/datatypes" "gorm.io/datatypes"
"gorm.io/gorm" "gorm.io/gorm"
@ -54,7 +55,7 @@ func New(dsn string) (db Database, err error) {
return return
} }
func (db Database) GetImportTimestamp(source string, target string, entity string) (time.Time, error) { func (db Database) GetImportTimestamp(source string, target string, entity models.Entity) (time.Time, error) {
result := ImportTimestamp{ result := ImportTimestamp{
SourceService: source, SourceService: source,
TargetService: target, TargetService: target,
@ -64,7 +65,7 @@ func (db Database) GetImportTimestamp(source string, target string, entity strin
return result.Timestamp, err return result.Timestamp, err
} }
func (db Database) SetImportTimestamp(source string, target string, entity string, timestamp time.Time) error { func (db Database) SetImportTimestamp(source string, target string, entity models.Entity, timestamp time.Time) error {
entry := ImportTimestamp{ entry := ImportTimestamp{
SourceService: source, SourceService: source,
TargetService: target, TargetService: target,

View file

@ -23,6 +23,7 @@ import (
"github.com/stretchr/testify/assert" "github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require" "github.com/stretchr/testify/require"
"go.uploadedlobster.com/scotty/internal/models"
"go.uploadedlobster.com/scotty/internal/storage" "go.uploadedlobster.com/scotty/internal/storage"
"golang.org/x/oauth2" "golang.org/x/oauth2"
) )
@ -33,7 +34,7 @@ func TestTimestampUpdate(t *testing.T) {
source := "maloja" source := "maloja"
target := "funkwhale" target := "funkwhale"
entity := "loves" entity := models.Loves
timestamp, err := db.GetImportTimestamp(source, target, entity) timestamp, err := db.GetImportTimestamp(source, target, entity)
require.NoError(t, err) require.NoError(t, err)
assert.Equal(t, time.Time{}, timestamp) assert.Equal(t, time.Time{}, timestamp)

View file

@ -20,13 +20,14 @@ package storage
import ( import (
"time" "time"
"go.uploadedlobster.com/scotty/internal/models"
"gorm.io/datatypes" "gorm.io/datatypes"
) )
type ImportTimestamp struct { type ImportTimestamp struct {
SourceService string `gorm:"primaryKey"` SourceService string `gorm:"primaryKey"`
TargetService string `gorm:"primaryKey"` TargetService string `gorm:"primaryKey"`
Entity string `gorm:"primaryKey"` Entity models.Entity `gorm:"primaryKey"`
CreatedAt time.Time CreatedAt time.Time
UpdatedAt time.Time UpdatedAt time.Time
Timestamp time.Time `gorm:"default:'1970-01-01T00:00:00'"` Timestamp time.Time `gorm:"default:'1970-01-01T00:00:00'"`