127 lines
2.7 KiB
Go
127 lines
2.7 KiB
Go
|
package models
|
||
|
|
||
|
import (
|
||
|
"database/sql"
|
||
|
"time"
|
||
|
|
||
|
pb "go.unistack.org/pkgdash/proto"
|
||
|
"google.golang.org/protobuf/types/known/timestamppb"
|
||
|
)
|
||
|
|
||
|
type Handler struct {
|
||
|
ID uint64 `db:"id"`
|
||
|
Package uint64 `db:"package"`
|
||
|
Name string `db:"name"`
|
||
|
Coverage sql.NullFloat64 `db:"coverage"`
|
||
|
}
|
||
|
|
||
|
func NewHandler(hdlr *Handler) *pb.Handler {
|
||
|
if hdlr == nil {
|
||
|
return nil
|
||
|
}
|
||
|
rsp := &pb.Handler{
|
||
|
Id: hdlr.ID,
|
||
|
Package: hdlr.Package,
|
||
|
Name: hdlr.Name,
|
||
|
}
|
||
|
if hdlr.Coverage.Valid {
|
||
|
rsp.Coverage = hdlr.Coverage.Float64
|
||
|
}
|
||
|
return rsp
|
||
|
}
|
||
|
|
||
|
type Package struct {
|
||
|
Created time.Time `db:"created"`
|
||
|
Updated time.Time `db:"updated"`
|
||
|
LastCheck sql.NullTime `db:"last_check"`
|
||
|
Type string `db:"type"`
|
||
|
Name string `db:"name"`
|
||
|
URL string `db:"url"`
|
||
|
Description sql.NullString `db:"description"`
|
||
|
Coverage sql.NullFloat64 `db:"coverage"`
|
||
|
Modules uint64 `db:"modules"`
|
||
|
ID uint64 `db:"id"`
|
||
|
Status uint64 `db:"status"`
|
||
|
Comments uint64 `db:"comments"`
|
||
|
Issues uint64 `db:"issues"`
|
||
|
}
|
||
|
|
||
|
func NewPackage(pkg *Package) *pb.Package {
|
||
|
if pkg == nil {
|
||
|
return nil
|
||
|
}
|
||
|
rsp := &pb.Package{
|
||
|
Name: pkg.Name,
|
||
|
Url: pkg.URL,
|
||
|
Modules: pkg.Modules,
|
||
|
Issues: pkg.Issues,
|
||
|
Comments: pkg.Comments,
|
||
|
Id: pkg.ID,
|
||
|
Created: timestamppb.New(pkg.Created),
|
||
|
Updated: timestamppb.New(pkg.Updated),
|
||
|
Type: pkg.Type,
|
||
|
}
|
||
|
if rsp.Type == "" {
|
||
|
rsp.Type = "package"
|
||
|
}
|
||
|
if pkg.Description.Valid {
|
||
|
rsp.Description = pkg.Description.String
|
||
|
}
|
||
|
if pkg.LastCheck.Valid {
|
||
|
rsp.LastCheck = timestamppb.New(pkg.LastCheck.Time)
|
||
|
}
|
||
|
if pkg.Coverage.Valid {
|
||
|
rsp.Coverage = pkg.Coverage.Float64
|
||
|
}
|
||
|
return rsp
|
||
|
}
|
||
|
|
||
|
type Module struct {
|
||
|
LastCheck sql.NullTime `db:"last_check"`
|
||
|
Name string `db:"name"`
|
||
|
Version string `db:"version"`
|
||
|
ID uint64 `db:"id"`
|
||
|
}
|
||
|
|
||
|
func NewModule(mod *Module) *pb.Module {
|
||
|
if mod == nil {
|
||
|
return nil
|
||
|
}
|
||
|
rsp := &pb.Module{
|
||
|
Name: mod.Name,
|
||
|
Version: mod.Version,
|
||
|
Id: mod.ID,
|
||
|
}
|
||
|
if mod.LastCheck.Valid {
|
||
|
rsp.LastCheck = timestamppb.New(mod.LastCheck.Time)
|
||
|
}
|
||
|
return rsp
|
||
|
}
|
||
|
|
||
|
type Issue struct {
|
||
|
Comment string `db:"comment"`
|
||
|
Modules []int64 `db:"modules"`
|
||
|
ID uint64 `db:"id"`
|
||
|
Status uint64 `db:"status"`
|
||
|
Package uint64 `db:"package"`
|
||
|
}
|
||
|
|
||
|
type Comment struct {
|
||
|
Created time.Time `db:"created"`
|
||
|
Updated time.Time `db:"updated"`
|
||
|
Comment string `db:"comment"`
|
||
|
ID uint64 `db:"id"`
|
||
|
}
|
||
|
|
||
|
func NewComment(com *Comment) *pb.Comment {
|
||
|
if com == nil {
|
||
|
return nil
|
||
|
}
|
||
|
return &pb.Comment{
|
||
|
Id: com.ID,
|
||
|
Comment: com.Comment,
|
||
|
Created: timestamppb.New(com.Created),
|
||
|
Updated: timestamppb.New(com.Updated),
|
||
|
}
|
||
|
}
|