MVP
This commit is contained in:
7
models/error.go
Normal file
7
models/error.go
Normal file
@@ -0,0 +1,7 @@
|
||||
package models
|
||||
|
||||
type APIError struct {
|
||||
ErrorCode string `json:"errorcode"`
|
||||
Message string `json:"message"`
|
||||
FAPIErrorMessage *string `json:"fapiMessage,omitempty"`
|
||||
}
|
21
models/ids.go
Normal file
21
models/ids.go
Normal file
@@ -0,0 +1,21 @@
|
||||
package models
|
||||
|
||||
import (
|
||||
"go.mongodb.org/mongo-driver/bson/bsontype"
|
||||
"go.mongodb.org/mongo-driver/bson/primitive"
|
||||
)
|
||||
|
||||
//go:generate go run ../_gen/id-generate.go -- ids_gen.go
|
||||
|
||||
type EntityID interface {
|
||||
ObjID() (primitive.ObjectID, error)
|
||||
String() string
|
||||
MarshalBSONValue() (bsontype.Type, []byte, error)
|
||||
AsAny() AnyID
|
||||
}
|
||||
|
||||
type AnyID string //@id:type
|
||||
|
||||
type JobLogID string //@id:type
|
||||
|
||||
type JobExecutionID string //@id:type
|
103
models/ids_gen.go
Normal file
103
models/ids_gen.go
Normal file
@@ -0,0 +1,103 @@
|
||||
// Code generated by id-generate.go DO NOT EDIT.
|
||||
|
||||
package models
|
||||
|
||||
import "go.mongodb.org/mongo-driver/bson"
|
||||
import "go.mongodb.org/mongo-driver/bson/bsontype"
|
||||
import "go.mongodb.org/mongo-driver/bson/primitive"
|
||||
import "gogs.mikescher.com/BlackForestBytes/goext/exerr"
|
||||
|
||||
const ChecksumIDGenerator = "8fa696914bf8d1c1c4b9f80be45d0a9dfbd0fed789856bf84ced2979c789b958" // GoExtVersion: 0.0.288
|
||||
|
||||
// ================================ AnyID (ids.go) ================================
|
||||
|
||||
func (i AnyID) MarshalBSONValue() (bsontype.Type, []byte, error) {
|
||||
if objId, err := primitive.ObjectIDFromHex(string(i)); err == nil {
|
||||
return bson.MarshalValue(objId)
|
||||
} else {
|
||||
return 0, nil, exerr.New(exerr.TypeMarshalEntityID, "Failed to marshal AnyID("+i.String()+") to ObjectId").Str("value", string(i)).Type("type", i).Build()
|
||||
}
|
||||
}
|
||||
|
||||
func (i AnyID) String() string {
|
||||
return string(i)
|
||||
}
|
||||
|
||||
func (i AnyID) ObjID() (primitive.ObjectID, error) {
|
||||
return primitive.ObjectIDFromHex(string(i))
|
||||
}
|
||||
|
||||
func (i AnyID) Valid() bool {
|
||||
_, err := primitive.ObjectIDFromHex(string(i))
|
||||
return err == nil
|
||||
}
|
||||
|
||||
func (i AnyID) AsAny() AnyID {
|
||||
return AnyID(i)
|
||||
}
|
||||
|
||||
func NewAnyID() AnyID {
|
||||
return AnyID(primitive.NewObjectID().Hex())
|
||||
}
|
||||
|
||||
// ================================ JobLogID (ids.go) ================================
|
||||
|
||||
func (i JobLogID) MarshalBSONValue() (bsontype.Type, []byte, error) {
|
||||
if objId, err := primitive.ObjectIDFromHex(string(i)); err == nil {
|
||||
return bson.MarshalValue(objId)
|
||||
} else {
|
||||
return 0, nil, exerr.New(exerr.TypeMarshalEntityID, "Failed to marshal JobLogID("+i.String()+") to ObjectId").Str("value", string(i)).Type("type", i).Build()
|
||||
}
|
||||
}
|
||||
|
||||
func (i JobLogID) String() string {
|
||||
return string(i)
|
||||
}
|
||||
|
||||
func (i JobLogID) ObjID() (primitive.ObjectID, error) {
|
||||
return primitive.ObjectIDFromHex(string(i))
|
||||
}
|
||||
|
||||
func (i JobLogID) Valid() bool {
|
||||
_, err := primitive.ObjectIDFromHex(string(i))
|
||||
return err == nil
|
||||
}
|
||||
|
||||
func (i JobLogID) AsAny() AnyID {
|
||||
return AnyID(i)
|
||||
}
|
||||
|
||||
func NewJobLogID() JobLogID {
|
||||
return JobLogID(primitive.NewObjectID().Hex())
|
||||
}
|
||||
|
||||
// ================================ JobExecutionID (ids.go) ================================
|
||||
|
||||
func (i JobExecutionID) MarshalBSONValue() (bsontype.Type, []byte, error) {
|
||||
if objId, err := primitive.ObjectIDFromHex(string(i)); err == nil {
|
||||
return bson.MarshalValue(objId)
|
||||
} else {
|
||||
return 0, nil, exerr.New(exerr.TypeMarshalEntityID, "Failed to marshal JobExecutionID("+i.String()+") to ObjectId").Str("value", string(i)).Type("type", i).Build()
|
||||
}
|
||||
}
|
||||
|
||||
func (i JobExecutionID) String() string {
|
||||
return string(i)
|
||||
}
|
||||
|
||||
func (i JobExecutionID) ObjID() (primitive.ObjectID, error) {
|
||||
return primitive.ObjectIDFromHex(string(i))
|
||||
}
|
||||
|
||||
func (i JobExecutionID) Valid() bool {
|
||||
_, err := primitive.ObjectIDFromHex(string(i))
|
||||
return err == nil
|
||||
}
|
||||
|
||||
func (i JobExecutionID) AsAny() AnyID {
|
||||
return AnyID(i)
|
||||
}
|
||||
|
||||
func NewJobExecutionID() JobExecutionID {
|
||||
return JobExecutionID(primitive.NewObjectID().Hex())
|
||||
}
|
40
models/jobExecution.go
Normal file
40
models/jobExecution.go
Normal file
@@ -0,0 +1,40 @@
|
||||
package models
|
||||
|
||||
import (
|
||||
"gogs.mikescher.com/BlackForestBytes/goext/rfctime"
|
||||
"time"
|
||||
)
|
||||
|
||||
type JobStatus string //@enum:type
|
||||
|
||||
const (
|
||||
JobStatusRunning JobStatus = "RUNNING"
|
||||
JobStatusSuccess JobStatus = "SUCCESS"
|
||||
JobStatusFailed JobStatus = "FAILED"
|
||||
)
|
||||
|
||||
type JobExecution struct {
|
||||
JobExecutionID JobExecutionID `bson:"_id,omitempty" json:"id"`
|
||||
JobName string `bson:"jobName" json:"jobName"`
|
||||
StartTime rfctime.RFC3339NanoTime `bson:"startTime" json:"startTime"`
|
||||
EndTime *rfctime.RFC3339NanoTime `bson:"endTime" json:"endTime"`
|
||||
Changes int `bson:"changes" json:"changes"`
|
||||
Status JobStatus `bson:"status" json:"status"`
|
||||
Error *string `bson:"error" json:"error"`
|
||||
}
|
||||
|
||||
func (u JobExecution) GetID() AnyID {
|
||||
return u.JobExecutionID.AsAny()
|
||||
}
|
||||
|
||||
func (u JobExecution) GetCreationTime() time.Time {
|
||||
return u.StartTime.Time()
|
||||
}
|
||||
|
||||
func (u JobExecution) Delta() time.Duration {
|
||||
if u.EndTime != nil {
|
||||
return u.EndTime.Sub(u.StartTime)
|
||||
} else {
|
||||
return time.Now().Sub(u.StartTime.Time())
|
||||
}
|
||||
}
|
36
models/jobLog.go
Normal file
36
models/jobLog.go
Normal file
@@ -0,0 +1,36 @@
|
||||
package models
|
||||
|
||||
import (
|
||||
"gogs.mikescher.com/BlackForestBytes/goext/rfctime"
|
||||
"time"
|
||||
)
|
||||
|
||||
type JobLogLevel string //@enum:type
|
||||
|
||||
const (
|
||||
JobLogLevelDebug JobLogLevel = "DEBUG"
|
||||
JobLogLevelInfo JobLogLevel = "INFO"
|
||||
JobLogLevelWarn JobLogLevel = "WARN"
|
||||
JobLogLevelError JobLogLevel = "ERROR"
|
||||
JobLogLevelFatal JobLogLevel = "FATAL"
|
||||
)
|
||||
|
||||
type JobLog struct {
|
||||
JobLogID JobLogID `bson:"_id,omitempty" json:"id"`
|
||||
JobExecutionID JobExecutionID `bson:"executionId" json:"executionId"`
|
||||
JobName string `bson:"jobName" json:"jobName"`
|
||||
Type string `bson:"type" json:"type"`
|
||||
Time rfctime.RFC3339NanoTime `bson:"time" json:"time"`
|
||||
Message string `bson:"message" json:"message"`
|
||||
Level JobLogLevel `bson:"level" json:"level"`
|
||||
Extra any `bson:"extra" json:"extra"`
|
||||
Deleted *rfctime.RFC3339NanoTime `bson:"deleted" json:"deleted"`
|
||||
}
|
||||
|
||||
func (u JobLog) GetID() AnyID {
|
||||
return u.JobLogID.AsAny()
|
||||
}
|
||||
|
||||
func (u JobLog) GetCreationTime() time.Time {
|
||||
return u.Time.Time()
|
||||
}
|
5
models/server.go
Normal file
5
models/server.go
Normal file
@@ -0,0 +1,5 @@
|
||||
package models
|
||||
|
||||
type Server struct {
|
||||
Port int
|
||||
}
|
Reference in New Issue
Block a user