This commit is contained in:
2023-12-01 09:56:06 +01:00
commit 1f4a477077
46 changed files with 14153 additions and 0 deletions

7
models/error.go Normal file
View 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
View 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
View 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
View 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
View 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
View File

@@ -0,0 +1,5 @@
package models
type Server struct {
Port int
}