package models

import (
	"time"

	"xorm.io/xorm"
)

func (src *Src) GetOrCreate(session *xorm.Session) (apisrc *APISrc, err error) {
	has, err := session.Get(src)
	if err != nil {
		return
	}
	if !has {
		session.Insert(src)
	} else {
		session.ID(src.ID).Update(src)
	}
	src.Get(session)
	apisrc = src.APIFormat()
	return
}

func (src *Src) Get(session *xorm.Session) (apisrc *APISrc, err error) {
	has, err := session.Get(src)
	if !has || err != nil {
		return
	}
	apisrc = src.APIFormat()
	return
}

func (src *Src) APIFormat() *APISrc {
	if src == nil {
		return &APISrc{}
	}
	return &APISrc{
		Src: src.Src,
	}
}

func (src *Src) APIParse(apisrc APISrc) (err error) {
	*src = Src{
		Src: apisrc.Src}
	return
}

type Src struct {
	ID      int       `xorm:"pk autoincr"`
	Src     string    `xorm:"text unique(srcindex) src" json:"src"`
	Created time.Time `xorm:"created notnull"`
	Updated time.Time `xorm:"updated notnull"`
}

type APISrc struct {
	ID  int    `json:"-"`
	Src string `json:"src"`
}
