models

package
v0.0.0-...-ae9d8b3 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 24, 2019 License: MIT Imports: 25 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	OriginalImageType = imageIota(utils.Transform{Format: imaging.PNG, MimeType: "image/png", Path: "original/%d.png"})
	SmallImageType    = imageIota(utils.Transform{Format: imaging.JPEG, MimeType: "image/jpeg", Size: 300, Path: "thumbs/%d/300.jpg"})
	LargeImageType    = imageIota(utils.Transform{Format: imaging.JPEG, MimeType: "image/jpeg", Size: 1200, Path: "thumbs/%d/1200.jpg"})
)
View Source
var (
	SiteDealJobType = siteiota("deal")
	SiteFullJobType = siteiota("full")
)
View Source
var ValidSlug = regexp.MustCompile(`^\d{5}-[a-z0-9-]+`)

ValidSlug regexp in "55555-slug-string" format.

Functions

func Connect

func Connect() *pg.DB

func MakeSlug

func MakeSlug(slug string) string

MakeSlug creates a slug in the format: 55555-my-slug-name. Fairly crude but ensures a unique slug without having to check the database.

func MarkProductsInactive

func MarkProductsInactive(db orm.DB, siteID int, deal bool) error

MarkProductsInactive sets products belonging to a site as inactive. It either does all deals or non-deals.

func NormalizeTags

func NormalizeTags(tags []string) []string

NormalizeTags attempts to normalize tags Returns a string slice of unique, normalized tags

func NormalizeUrls

func NormalizeUrls(urls []string) []string

NormalizeUrls attempts to normalize urls Returns a string slice of unique, normalized urls

func RunInTestTransaction

func RunInTestTransaction(logging bool, fn func(orm.DB))

RunInTestTransaction wraps database queries in a transaction.

func TableCountDiff

func TableCountDiff(db orm.DB, table string, testFn func()) int

func TagQuery

func TagQuery(field string, tags []string, fn Normalizer) string

TagQuery queries and normalizes tags stored in a Postgres array column. Returns a sqlboiler QueryMod.

func TestImageMatchesFixture

func TestImageMatchesFixture(t *testing.T, conn *utils.MinioConnection, objectPath, fixtureName string)

func ValidAPIUser

func ValidAPIUser(db orm.DB, token string) bool

Types

type Artist

type Artist struct {
	ID      int
	Name    string
	Slug    string
	Urls    []string `pg:",array" sql:",notnull"`
	Tags    []string `pg:",array" sql:",notnull"`
	Designs []*Design
}

func FindArtistBySlug

func FindArtistBySlug(db orm.DB, slug string, page int) (*Artist, error)

func FindOrCreateArtist

func FindOrCreateArtist(db orm.DB, name string, urls []string) (*Artist, error)

FindOrCreateArtist convenience function. It attempts to find an artist by name or by urls. Otherwise it creates a new artist.

func ImportArtistFixtures

func ImportArtistFixtures(db orm.DB) []Artist

func (*Artist) ArtistAppendWhitelistedUrls

func (a *Artist) ArtistAppendWhitelistedUrls(urls []string)

ArtistAppendWhitelistedUrls normalizes urls and merges any urls from whitelisted domains with the artists urls.

func (*Artist) BeforeInsert

func (a *Artist) BeforeInsert(db orm.DB) error

func (*Artist) BeforeUpdate

func (a *Artist) BeforeUpdate(db orm.DB) error

type Category

type Category struct {
	ID          int
	ProductID   int
	Name        string
	Slug        string
	Tags        []string `pg:",array" sql:",notnull"`
	IgnoredTags []string `pg:",array" sql:",notnull"`

	Product *Product
}

type Design

type Design struct {
	ID           int
	ArtistID     int
	Name         string
	Slug         string
	Description  string   `sql:",notnull"`
	Tags         []string `pg:",array" sql:",notnull"`
	CategoryTags []string `pg:",array" sql:",notnull"`
	Mature       bool     `sql:",notnull"`

	Artist     *Artist
	Products   []*Product
	Categories []*Category `pg:",many2many:category_designs"`
}

func FindDesignBySlug

func FindDesignBySlug(db orm.DB, slug string) (*Design, error)

func FindOrCreateDesign

func FindOrCreateDesign(db orm.DB, artistID int, name string) (*Design, error)

func ImportDesignFixtures

func ImportDesignFixtures(db orm.DB) []Design

func (*Design) BeforeInsert

func (d *Design) BeforeInsert(db orm.DB) error

func (*Design) BeforeUpdate

func (d *Design) BeforeUpdate(db orm.DB) error

type ImageType

type ImageType int

func (ImageType) Transform

func (t ImageType) Transform() utils.Transform

type Normalizer

type Normalizer func([]string) []string

Normalizer is the type of Normalizer

type Product

type Product struct {
	ID              int
	DesignID        int
	SiteID          int
	Slug            string `sql:",notnull"`
	URL             string
	Active          bool                              `sql:",notnull"`
	Deal            bool                              `sql:",notnull"`
	LastChance      bool                              `sql:",notnull"`
	Tags            []string                          `pg:",array" sql:"tags,DEFAULT:'{}',notnull"`
	Prices          map[string]string                 `pg:",hstore"`
	ConvertedPrices map[string]utils.ApproximatePrice `sql:"-"`
	ImageBackground string
	ImageUpdatedAt  time.Time
	ExpiresAt       pg.NullTime
	ActiveAt        pg.NullTime

	Design *Design
	Site   *Site
}

func ActiveDeals

func ActiveDeals(db orm.DB) ([]*Product, error)

ActiveDeals queries the database for currently active deals and eager loads related models. It returns a `model.Product` slice and any error encountered.

func FindProductBySlug

func FindProductBySlug(db orm.DB, slug string) (*Product, error)

func ImportProductFixtures

func ImportProductFixtures(db orm.DB) []Product

func (*Product) AfterQuery

func (p *Product) AfterQuery(db orm.DB) error

func (*Product) BeforeInsert

func (p *Product) BeforeInsert(db orm.DB) error

func (*Product) BeforeUpdate

func (p *Product) BeforeUpdate(db orm.DB) error

func (*Product) BuyURL

func (p *Product) BuyURL(db orm.DB) (string, error)

func (*Product) GoURL

func (p *Product) GoURL() string

func (*Product) ImageURL

func (p *Product) ImageURL(imageType ImageType) string

func (*Product) LargeImageURL

func (p *Product) LargeImageURL() string

func (*Product) SmallImageURL

func (p *Product) SmallImageURL() string

func (*Product) UpdateImage

func (p *Product) UpdateImage(db orm.DB, minioConn *utils.MinioConnection, url string) error

func (*Product) UpdateImageIfExpired

func (p *Product) UpdateImageIfExpired(db orm.DB, minioConn *utils.MinioConnection, url string) error

type ScrapydItem

type ScrapydItem struct {
	Name         string         `json:"name"`
	Description  string         `json:"description"`
	URL          string         `json:"url"`
	ArtistName   string         `json:"artist_name"`
	ArtistUrls   []string       `json:"artist_urls"`
	Prices       map[string]int `json:"prices"`
	ImageURL     string         `json:"image_url"`
	Tags         []string       `json:"tags"`
	FabricColors []string       `json:"fabric_colors"`
	Active       bool           `json:"active"`
	Deal         bool           `json:"deal"`
	LastChance   bool           `json:"last_chance"`
	Valid        bool           `json:"valid"`
	ExpiresAt    time.Time      `json:"expires_at"`
}

func (*ScrapydItem) StringPrices

func (item *ScrapydItem) StringPrices() map[string]string

type Site

type Site struct {
	ID           int
	Name         string
	Slug         string
	DomainName   string
	AffiliateURL string
	DealScraper  bool
	FullScraper  bool
	Active       bool
	DisplayOrder int

	Products []*Product
}

func ActiveSites

func ActiveSites(db orm.DB) ([]*Site, error)

func ActiveSitesWithJobType

func ActiveSitesWithJobType(db orm.DB, jobType SiteJobType) ([]*Site, error)

func FindSiteBySlug

func FindSiteBySlug(db orm.DB, slug string, page int) (*Site, error)

func ImportSiteFixtures

func ImportSiteFixtures(db orm.DB) []Site

type SiteJobType

type SiteJobType int

func (SiteJobType) DatabaseField

func (e SiteJobType) DatabaseField() string

func (SiteJobType) String

func (e SiteJobType) String() string

type SpiderItem

type SpiderItem struct {
	ID          int
	SpiderJobID int
	ProductID   int
	ItemData    string
	Error       string
	CreatedAt   time.Time

	SpiderJob *SpiderJob
	Product   *Product
}

func CreateSpiderItem

func CreateSpiderItem(db orm.DB, spiderJobID int, data string) (*SpiderItem, error)

func FindSpiderItem

func FindSpiderItem(db orm.DB, id int) (*SpiderItem, error)

func (*SpiderItem) ParseItemData

func (item *SpiderItem) ParseItemData(db orm.DB, minioConn *utils.MinioConnection) error

func (*SpiderItem) UpdateError

func (item *SpiderItem) UpdateError(db orm.DB, err error)

type SpiderJob

type SpiderJob struct {
	ID           int
	SiteID       int
	ScrapydJobID string
	JobType      string
	CreatedAt    time.Time

	Site *Site
}

func CreateSpiderJob

func CreateSpiderJob(db orm.DB, siteID int, scrapydJobID, jobType string) (*SpiderJob, error)

func FindSpiderJob

func FindSpiderJob(db orm.DB, id int) (*SpiderJob, error)

type User

type User struct {
	ID                int
	Email             string
	Admin             bool
	APIAccess         bool
	APIToken          string
	EncryptedPassword string
}

func ImportUserFixtures

func ImportUserFixtures(db orm.DB) []User

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL