69 lines
1.8 KiB
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 unique,
|
|
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,
|
|
}
|
|
}
|