Files
tvqueue/model/model.go

69 lines
1.8 KiB
Go

package model
import (
"time"
"github.com/jmoiron/sqlx"
)
type Model struct {
db *sqlx.DB
}
type Torrent struct {
ID int64 `json:"id" db:"id"`
Title string `json:"title" db:"title"`
Guid string `json:"guid" db:"guid"`
Indexer string `json:"indexer" db:"indexer"`
Pubdate time.Time `json:"pubdate" db:"pubdate"`
Size int `json:"size" db:"size"`
DownloadURL string `json:"downloadUrl" db:"download_url"`
Seeders int `json:"seeders" db:"seeders"`
Peers int `json:"peers" db:"peers"`
Category int `json:"category" db:"category"`
Hash *string `json:"hash" db:"hash"`
Downloaded bool `json:"downloaded"`
CreatedAt time.Time `json:"createdAt" db:"created_at"`
ItemID int `json:"itemId" db:"item_id"`
}
type Item struct {
ID int64 `json:"id" db:"id"`
Query string `json:"query" db:"query"`
Category int `json:"category" db:"category"`
CreatedAt time.Time `json:"createdAt" db:"created_at"`
Torrents []Torrent `json:"torrents,omitempty"`
}
func (m *Model) Init() {
m.db.MustExec(`CREATE TABLE IF NOT EXISTS items (
id integer primary key,
query varchar not null,
category integer not null,
created_at datetime default CURRENT_TIMESTAMP
)`)
m.db.MustExec(`CREATE TABLE IF NOT EXISTS torrents (
id integer primary key,
title varchar not null,
guid varchar not null,
indexer varchar not null,
pubdate datetime not null,
size integer not null,
download_url varchar,
seeders integer not null,
peers integer not null,
category integer not null,
hash varchar,
created_at datetime default CURRENT_TIMESTAMP,
item_id integer not null,
FOREIGN KEY (item_id) REFERENCES users(id)
)`)
}
func New(db *sqlx.DB) *Model {
return &Model{
db: db,
}
}