feat: Add registerParticipant impl
Signed-off-by: devad <cossjie@foxmail.com> Former-commit-id: c860a80b8338c61d9fa8b809c572e6ccc0477626
This commit is contained in:
parent
588625c9b4
commit
df70dde0b3
|
@ -0,0 +1,9 @@
|
||||||
|
package config
|
||||||
|
|
||||||
|
import {{.authImport}}
|
||||||
|
|
||||||
|
type Config struct {
|
||||||
|
rest.RestConf
|
||||||
|
{{.auth}}
|
||||||
|
{{.jwtTrans}}
|
||||||
|
}
|
|
@ -0,0 +1,17 @@
|
||||||
|
package svc
|
||||||
|
|
||||||
|
import (
|
||||||
|
{{.configImport}}
|
||||||
|
)
|
||||||
|
|
||||||
|
type ServiceContext struct {
|
||||||
|
Config {{.config}}
|
||||||
|
{{.middleware}}
|
||||||
|
}
|
||||||
|
|
||||||
|
func NewServiceContext(c {{.config}}) *ServiceContext {
|
||||||
|
return &ServiceContext{
|
||||||
|
Config: c,
|
||||||
|
{{.middlewareAssignment}}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,3 @@
|
||||||
|
Name: {{.serviceName}}
|
||||||
|
Host: {{.host}}
|
||||||
|
Port: {{.port}}
|
|
@ -0,0 +1,24 @@
|
||||||
|
package {{.PkgName}}
|
||||||
|
|
||||||
|
import (
|
||||||
|
"net/http"
|
||||||
|
|
||||||
|
"PCM/common/result"
|
||||||
|
|
||||||
|
"github.com/zeromicro/go-zero/rest/httpx"
|
||||||
|
{{.ImportPackages}}
|
||||||
|
)
|
||||||
|
|
||||||
|
func {{.HandlerName}}(svcCtx *svc.ServiceContext) http.HandlerFunc {
|
||||||
|
return func(w http.ResponseWriter, r *http.Request) {
|
||||||
|
{{if .HasRequest}}var req types.{{.RequestType}}
|
||||||
|
if err := httpx.Parse(r, &req); err != nil {
|
||||||
|
result.ParamErrorResult(r,w,err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
{{end}}l := {{.LogicName}}.New{{.LogicType}}(r.Context(), svcCtx)
|
||||||
|
{{if .HasResp}}resp, {{end}}err := l.{{.Call}}({{if .HasRequest}}&req{{end}})
|
||||||
|
result.HttpResult(r, w, {{if .HasResp}}resp{{else}}nil{{end}}, err)
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,25 @@
|
||||||
|
package {{.pkgName}}
|
||||||
|
|
||||||
|
import (
|
||||||
|
{{.imports}}
|
||||||
|
)
|
||||||
|
|
||||||
|
type {{.logic}} struct {
|
||||||
|
logx.Logger
|
||||||
|
ctx context.Context
|
||||||
|
svcCtx *svc.ServiceContext
|
||||||
|
}
|
||||||
|
|
||||||
|
func New{{.logic}}(ctx context.Context, svcCtx *svc.ServiceContext) *{{.logic}} {
|
||||||
|
return &{{.logic}}{
|
||||||
|
Logger: logx.WithContext(ctx),
|
||||||
|
ctx: ctx,
|
||||||
|
svcCtx: svcCtx,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (l *{{.logic}}) {{.function}}({{.request}}) {{.responseType}} {
|
||||||
|
// todo: add your logic here and delete this line
|
||||||
|
|
||||||
|
{{.returnString}}
|
||||||
|
}
|
|
@ -0,0 +1,26 @@
|
||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"flag"
|
||||||
|
"fmt"
|
||||||
|
|
||||||
|
{{.importPackages}}
|
||||||
|
)
|
||||||
|
|
||||||
|
var configFile = flag.String("f", "etc/{{.serviceName}}.yaml", "the config file")
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
flag.Parse()
|
||||||
|
|
||||||
|
var c config.Config
|
||||||
|
conf.MustLoad(*configFile, &c)
|
||||||
|
|
||||||
|
server := rest.MustNewServer(c.RestConf)
|
||||||
|
defer server.Stop()
|
||||||
|
|
||||||
|
ctx := svc.NewServiceContext(c)
|
||||||
|
handler.RegisterHandlers(server, ctx)
|
||||||
|
|
||||||
|
fmt.Printf("Starting server at %s:%d...\n", c.Host, c.Port)
|
||||||
|
server.Start()
|
||||||
|
}
|
|
@ -0,0 +1,19 @@
|
||||||
|
package middleware
|
||||||
|
|
||||||
|
import "net/http"
|
||||||
|
|
||||||
|
type {{.name}} struct {
|
||||||
|
}
|
||||||
|
|
||||||
|
func New{{.name}}() *{{.name}} {
|
||||||
|
return &{{.name}}{}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *{{.name}})Handle(next http.HandlerFunc) http.HandlerFunc {
|
||||||
|
return func(w http.ResponseWriter, r *http.Request) {
|
||||||
|
// TODO generate middleware implement function, delete after code implementation
|
||||||
|
|
||||||
|
// Passthrough to next handler if need
|
||||||
|
next(w, r)
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,4 @@
|
||||||
|
|
||||||
|
server.AddRoutes(
|
||||||
|
{{.routes}} {{.jwt}}{{.signature}} {{.prefix}} {{.timeout}}
|
||||||
|
)
|
|
@ -0,0 +1,13 @@
|
||||||
|
// Code generated by goctl. DO NOT EDIT.
|
||||||
|
package handler
|
||||||
|
|
||||||
|
import (
|
||||||
|
"net/http"{{if .hasTimeout}}
|
||||||
|
"time"{{end}}
|
||||||
|
|
||||||
|
{{.importPackages}}
|
||||||
|
)
|
||||||
|
|
||||||
|
func RegisterHandlers(server *rest.Server, serverCtx *svc.ServiceContext) {
|
||||||
|
{{.routesAdditions}}
|
||||||
|
}
|
|
@ -0,0 +1,24 @@
|
||||||
|
syntax = "v1"
|
||||||
|
|
||||||
|
info (
|
||||||
|
title: // TODO: add title
|
||||||
|
desc: // TODO: add description
|
||||||
|
author: "{{.gitUser}}"
|
||||||
|
email: "{{.gitEmail}}"
|
||||||
|
)
|
||||||
|
|
||||||
|
type request {
|
||||||
|
// TODO: add members here and delete this comment
|
||||||
|
}
|
||||||
|
|
||||||
|
type response {
|
||||||
|
// TODO: add members here and delete this comment
|
||||||
|
}
|
||||||
|
|
||||||
|
service {{.serviceName}} {
|
||||||
|
@handler GetUser // TODO: set handler name and delete this comment
|
||||||
|
get /users/id/:userId(request) returns(response)
|
||||||
|
|
||||||
|
@handler CreateUser // TODO: set handler name and delete this comment
|
||||||
|
post /users/create(request)
|
||||||
|
}
|
|
@ -0,0 +1,6 @@
|
||||||
|
// Code generated by goctl. DO NOT EDIT.
|
||||||
|
package types{{if .containsTime}}
|
||||||
|
import (
|
||||||
|
"time"
|
||||||
|
){{end}}
|
||||||
|
{{.types}}
|
|
@ -0,0 +1,33 @@
|
||||||
|
FROM golang:{{.Version}}alpine AS builder
|
||||||
|
|
||||||
|
LABEL stage=gobuilder
|
||||||
|
|
||||||
|
ENV CGO_ENABLED 0
|
||||||
|
{{if .Chinese}}ENV GOPROXY https://goproxy.cn,direct
|
||||||
|
RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories
|
||||||
|
{{end}}{{if .HasTimezone}}
|
||||||
|
RUN apk update --no-cache && apk add --no-cache tzdata
|
||||||
|
{{end}}
|
||||||
|
WORKDIR /build
|
||||||
|
|
||||||
|
ADD go.mod .
|
||||||
|
ADD go.sum .
|
||||||
|
RUN go mod download
|
||||||
|
COPY . .
|
||||||
|
{{if .Argument}}COPY {{.GoRelPath}}/etc /app/etc
|
||||||
|
{{end}}RUN go build -ldflags="-s -w" -o /app/{{.ExeFile}} {{.GoMainFrom}}
|
||||||
|
|
||||||
|
|
||||||
|
FROM {{.BaseImage}}
|
||||||
|
|
||||||
|
COPY --from=builder /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/ca-certificates.crt
|
||||||
|
{{if .HasTimezone}}COPY --from=builder /usr/share/zoneinfo/{{.Timezone}} /usr/share/zoneinfo/{{.Timezone}}
|
||||||
|
ENV TZ {{.Timezone}}
|
||||||
|
{{end}}
|
||||||
|
WORKDIR /app
|
||||||
|
COPY --from=builder /app/{{.ExeFile}} /app/{{.ExeFile}}{{if .Argument}}
|
||||||
|
COPY --from=builder /app/etc /app/etc{{end}}
|
||||||
|
{{if .HasPort}}
|
||||||
|
EXPOSE {{.Port}}
|
||||||
|
{{end}}
|
||||||
|
CMD ["./{{.ExeFile}}"{{.Argument}}]
|
|
@ -0,0 +1,113 @@
|
||||||
|
apiVersion: apps/v1
|
||||||
|
kind: Deployment
|
||||||
|
metadata:
|
||||||
|
name: {{.Name}}
|
||||||
|
namespace: {{.Namespace}}
|
||||||
|
labels:
|
||||||
|
app: {{.Name}}
|
||||||
|
spec:
|
||||||
|
replicas: {{.Replicas}}
|
||||||
|
revisionHistoryLimit: {{.Revisions}}
|
||||||
|
selector:
|
||||||
|
matchLabels:
|
||||||
|
app: {{.Name}}
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
app: {{.Name}}
|
||||||
|
spec:{{if .ServiceAccount}}
|
||||||
|
serviceAccountName: {{.ServiceAccount}}{{end}}
|
||||||
|
containers:
|
||||||
|
- name: {{.Name}}
|
||||||
|
image: {{.Image}}
|
||||||
|
{{if .ImagePullPolicy}}imagePullPolicy: {{.ImagePullPolicy}}
|
||||||
|
{{end}}ports:
|
||||||
|
- containerPort: {{.Port}}
|
||||||
|
readinessProbe:
|
||||||
|
tcpSocket:
|
||||||
|
port: {{.Port}}
|
||||||
|
initialDelaySeconds: 5
|
||||||
|
periodSeconds: 10
|
||||||
|
livenessProbe:
|
||||||
|
tcpSocket:
|
||||||
|
port: {{.Port}}
|
||||||
|
initialDelaySeconds: 15
|
||||||
|
periodSeconds: 20
|
||||||
|
resources:
|
||||||
|
requests:
|
||||||
|
cpu: {{.RequestCpu}}m
|
||||||
|
memory: {{.RequestMem}}Mi
|
||||||
|
limits:
|
||||||
|
cpu: {{.LimitCpu}}m
|
||||||
|
memory: {{.LimitMem}}Mi
|
||||||
|
volumeMounts:
|
||||||
|
- name: timezone
|
||||||
|
mountPath: /etc/localtime
|
||||||
|
{{if .Secret}}imagePullSecrets:
|
||||||
|
- name: {{.Secret}}
|
||||||
|
{{end}}volumes:
|
||||||
|
- name: timezone
|
||||||
|
hostPath:
|
||||||
|
path: /usr/share/zoneinfo/Asia/Shanghai
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
name: {{.Name}}-svc
|
||||||
|
namespace: {{.Namespace}}
|
||||||
|
spec:
|
||||||
|
ports:
|
||||||
|
{{if .UseNodePort}}- nodePort: {{.NodePort}}
|
||||||
|
port: {{.Port}}
|
||||||
|
protocol: TCP
|
||||||
|
targetPort: {{.TargetPort}}
|
||||||
|
type: NodePort{{else}}- port: {{.Port}}
|
||||||
|
targetPort: {{.TargetPort}}{{end}}
|
||||||
|
selector:
|
||||||
|
app: {{.Name}}
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
apiVersion: autoscaling/v2beta1
|
||||||
|
kind: HorizontalPodAutoscaler
|
||||||
|
metadata:
|
||||||
|
name: {{.Name}}-hpa-c
|
||||||
|
namespace: {{.Namespace}}
|
||||||
|
labels:
|
||||||
|
app: {{.Name}}-hpa-c
|
||||||
|
spec:
|
||||||
|
scaleTargetRef:
|
||||||
|
apiVersion: apps/v1
|
||||||
|
kind: Deployment
|
||||||
|
name: {{.Name}}
|
||||||
|
minReplicas: {{.MinReplicas}}
|
||||||
|
maxReplicas: {{.MaxReplicas}}
|
||||||
|
metrics:
|
||||||
|
- type: Resource
|
||||||
|
resource:
|
||||||
|
name: cpu
|
||||||
|
targetAverageUtilization: 80
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
apiVersion: autoscaling/v2beta1
|
||||||
|
kind: HorizontalPodAutoscaler
|
||||||
|
metadata:
|
||||||
|
name: {{.Name}}-hpa-m
|
||||||
|
namespace: {{.Namespace}}
|
||||||
|
labels:
|
||||||
|
app: {{.Name}}-hpa-m
|
||||||
|
spec:
|
||||||
|
scaleTargetRef:
|
||||||
|
apiVersion: apps/v1
|
||||||
|
kind: Deployment
|
||||||
|
name: {{.Name}}
|
||||||
|
minReplicas: {{.MinReplicas}}
|
||||||
|
maxReplicas: {{.MaxReplicas}}
|
||||||
|
metrics:
|
||||||
|
- type: Resource
|
||||||
|
resource:
|
||||||
|
name: memory
|
||||||
|
targetAverageUtilization: 80
|
|
@ -0,0 +1,37 @@
|
||||||
|
apiVersion: batch/v1
|
||||||
|
kind: CronJob
|
||||||
|
metadata:
|
||||||
|
name: {{.Name}}
|
||||||
|
namespace: {{.Namespace}}
|
||||||
|
spec:
|
||||||
|
successfulJobsHistoryLimit: {{.SuccessfulJobsHistoryLimit}}
|
||||||
|
schedule: "{{.Schedule}}"
|
||||||
|
jobTemplate:
|
||||||
|
spec:
|
||||||
|
template:
|
||||||
|
spec:{{if .ServiceAccount}}
|
||||||
|
serviceAccountName: {{.ServiceAccount}}{{end}}
|
||||||
|
{{end}}containers:
|
||||||
|
- name: {{.Name}}
|
||||||
|
image: # todo image url
|
||||||
|
resources:
|
||||||
|
requests:
|
||||||
|
cpu: {{.RequestCpu}}m
|
||||||
|
memory: {{.RequestMem}}Mi
|
||||||
|
limits:
|
||||||
|
cpu: {{.LimitCpu}}m
|
||||||
|
memory: {{.LimitMem}}Mi
|
||||||
|
command:
|
||||||
|
- ./{{.ServiceName}}
|
||||||
|
- -f
|
||||||
|
- ./{{.Name}}.yaml
|
||||||
|
volumeMounts:
|
||||||
|
- name: timezone
|
||||||
|
mountPath: /etc/localtime
|
||||||
|
imagePullSecrets:
|
||||||
|
- name: # registry secret, if no, remove this
|
||||||
|
restartPolicy: OnFailure
|
||||||
|
volumes:
|
||||||
|
- name: timezone
|
||||||
|
hostPath:
|
||||||
|
path: /usr/share/zoneinfo/Asia/Shanghai
|
|
@ -0,0 +1,14 @@
|
||||||
|
func (m *default{{.upperStartCamelObject}}Model) Delete(ctx context.Context, {{.lowerStartCamelPrimaryKey}} {{.dataType}}) error {
|
||||||
|
{{if .withCache}}{{if .containsIndexCache}}data, err:=m.FindOne(ctx, {{.lowerStartCamelPrimaryKey}})
|
||||||
|
if err!=nil{
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
{{end}} {{.keys}}
|
||||||
|
_, err {{if .containsIndexCache}}={{else}}:={{end}} m.ExecCtx(ctx, func(ctx context.Context, conn sqlx.SqlConn) (result sql.Result, err error) {
|
||||||
|
query := fmt.Sprintf("delete from %s where {{.originalPrimaryKey}} = {{if .postgreSql}}$1{{else}}?{{end}}", m.table)
|
||||||
|
return conn.ExecCtx(ctx, query, {{.lowerStartCamelPrimaryKey}})
|
||||||
|
}, {{.keyValues}}){{else}}query := fmt.Sprintf("delete from %s where {{.originalPrimaryKey}} = {{if .postgreSql}}$1{{else}}?{{end}}", m.table)
|
||||||
|
_,err:=m.conn.ExecCtx(ctx, query, {{.lowerStartCamelPrimaryKey}}){{end}}
|
||||||
|
return err
|
||||||
|
}
|
|
@ -0,0 +1,5 @@
|
||||||
|
package {{.pkg}}
|
||||||
|
|
||||||
|
import "github.com/zeromicro/go-zero/core/stores/sqlx"
|
||||||
|
|
||||||
|
var ErrNotFound = sqlx.ErrNotFound
|
|
@ -0,0 +1 @@
|
||||||
|
{{.name}} {{.type}} {{.tag}} {{if .hasComment}}// {{.comment}}{{end}}
|
|
@ -0,0 +1,8 @@
|
||||||
|
func (m *default{{.upperStartCamelObject}}Model) formatPrimary(primary interface{}) string {
|
||||||
|
return fmt.Sprintf("%s%v", {{.primaryKeyLeft}}, primary)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *default{{.upperStartCamelObject}}Model) queryPrimary(ctx context.Context, conn sqlx.SqlConn, v, primary interface{}) error {
|
||||||
|
query := fmt.Sprintf("select %s from %s where {{.originalPrimaryField}} = {{if .postgreSql}}$1{{else}}?{{end}} limit 1", {{.lowerStartCamelObject}}Rows, m.table )
|
||||||
|
return conn.QueryRowCtx(ctx, v, query, primary)
|
||||||
|
}
|
|
@ -0,0 +1,30 @@
|
||||||
|
func (m *default{{.upperStartCamelObject}}Model) FindOneBy{{.upperField}}(ctx context.Context, {{.in}}) (*{{.upperStartCamelObject}}, error) {
|
||||||
|
{{if .withCache}}{{.cacheKey}}
|
||||||
|
var resp {{.upperStartCamelObject}}
|
||||||
|
err := m.QueryRowIndexCtx(ctx, &resp, {{.cacheKeyVariable}}, m.formatPrimary, func(ctx context.Context, conn sqlx.SqlConn, v interface{}) (i interface{}, e error) {
|
||||||
|
query := fmt.Sprintf("select %s from %s where {{.originalField}} limit 1", {{.lowerStartCamelObject}}Rows, m.table)
|
||||||
|
if err := conn.QueryRowCtx(ctx, &resp, query, {{.lowerStartCamelField}}); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return resp.{{.upperStartCamelPrimaryKey}}, nil
|
||||||
|
}, m.queryPrimary)
|
||||||
|
switch err {
|
||||||
|
case nil:
|
||||||
|
return &resp, nil
|
||||||
|
case sqlc.ErrNotFound:
|
||||||
|
return nil, ErrNotFound
|
||||||
|
default:
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
}{{else}}var resp {{.upperStartCamelObject}}
|
||||||
|
query := fmt.Sprintf("select %s from %s where {{.originalField}} limit 1", {{.lowerStartCamelObject}}Rows, m.table )
|
||||||
|
err := m.conn.QueryRowCtx(ctx, &resp, query, {{.lowerStartCamelField}})
|
||||||
|
switch err {
|
||||||
|
case nil:
|
||||||
|
return &resp, nil
|
||||||
|
case sqlc.ErrNotFound:
|
||||||
|
return nil, ErrNotFound
|
||||||
|
default:
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
}{{end}}
|
|
@ -0,0 +1,26 @@
|
||||||
|
func (m *default{{.upperStartCamelObject}}Model) FindOne(ctx context.Context, {{.lowerStartCamelPrimaryKey}} {{.dataType}}) (*{{.upperStartCamelObject}}, error) {
|
||||||
|
{{if .withCache}}{{.cacheKey}}
|
||||||
|
var resp {{.upperStartCamelObject}}
|
||||||
|
err := m.QueryRowCtx(ctx, &resp, {{.cacheKeyVariable}}, func(ctx context.Context, conn sqlx.SqlConn, v interface{}) error {
|
||||||
|
query := fmt.Sprintf("select %s from %s where {{.originalPrimaryKey}} = {{if .postgreSql}}$1{{else}}?{{end}} limit 1", {{.lowerStartCamelObject}}Rows, m.table)
|
||||||
|
return conn.QueryRowCtx(ctx, v, query, {{.lowerStartCamelPrimaryKey}})
|
||||||
|
})
|
||||||
|
switch err {
|
||||||
|
case nil:
|
||||||
|
return &resp, nil
|
||||||
|
case sqlc.ErrNotFound:
|
||||||
|
return nil, ErrNotFound
|
||||||
|
default:
|
||||||
|
return nil, err
|
||||||
|
}{{else}}query := fmt.Sprintf("select %s from %s where {{.originalPrimaryKey}} = {{if .postgreSql}}$1{{else}}?{{end}} limit 1", {{.lowerStartCamelObject}}Rows, m.table)
|
||||||
|
var resp {{.upperStartCamelObject}}
|
||||||
|
err := m.conn.QueryRowCtx(ctx, &resp, query, {{.lowerStartCamelPrimaryKey}})
|
||||||
|
switch err {
|
||||||
|
case nil:
|
||||||
|
return &resp, nil
|
||||||
|
case sqlc.ErrNotFound:
|
||||||
|
return nil, ErrNotFound
|
||||||
|
default:
|
||||||
|
return nil, err
|
||||||
|
}{{end}}
|
||||||
|
}
|
|
@ -0,0 +1,13 @@
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"database/sql"
|
||||||
|
"fmt"
|
||||||
|
"strings"
|
||||||
|
{{if .time}}"time"{{end}}
|
||||||
|
|
||||||
|
{{if .containsPQ}}"github.com/lib/pq"{{end}}
|
||||||
|
"github.com/zeromicro/go-zero/core/stores/builder"
|
||||||
|
"github.com/zeromicro/go-zero/core/stores/sqlc"
|
||||||
|
"github.com/zeromicro/go-zero/core/stores/sqlx"
|
||||||
|
"github.com/zeromicro/go-zero/core/stringx"
|
||||||
|
)
|
|
@ -0,0 +1,14 @@
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"database/sql"
|
||||||
|
"fmt"
|
||||||
|
"strings"
|
||||||
|
{{if .time}}"time"{{end}}
|
||||||
|
|
||||||
|
{{if .containsPQ}}"github.com/lib/pq"{{end}}
|
||||||
|
"github.com/zeromicro/go-zero/core/stores/builder"
|
||||||
|
"github.com/zeromicro/go-zero/core/stores/cache"
|
||||||
|
"github.com/zeromicro/go-zero/core/stores/sqlc"
|
||||||
|
"github.com/zeromicro/go-zero/core/stores/sqlx"
|
||||||
|
"github.com/zeromicro/go-zero/core/stringx"
|
||||||
|
)
|
|
@ -0,0 +1,9 @@
|
||||||
|
func (m *default{{.upperStartCamelObject}}Model) Insert(ctx context.Context, data *{{.upperStartCamelObject}}) (sql.Result,error) {
|
||||||
|
{{if .withCache}}{{.keys}}
|
||||||
|
ret, err := m.ExecCtx(ctx, func(ctx context.Context, conn sqlx.SqlConn) (result sql.Result, err error) {
|
||||||
|
query := fmt.Sprintf("insert into %s (%s) values ({{.expression}})", m.table, {{.lowerStartCamelObject}}RowsExpectAutoSet)
|
||||||
|
return conn.ExecCtx(ctx, query, {{.expressionValues}})
|
||||||
|
}, {{.keyValues}}){{else}}query := fmt.Sprintf("insert into %s (%s) values ({{.expression}})", m.table, {{.lowerStartCamelObject}}RowsExpectAutoSet)
|
||||||
|
ret,err:=m.conn.ExecCtx(ctx, query, {{.expressionValues}}){{end}}
|
||||||
|
return ret,err
|
||||||
|
}
|
|
@ -0,0 +1 @@
|
||||||
|
Delete(ctx context.Context, {{.lowerStartCamelPrimaryKey}} {{.dataType}}) error
|
|
@ -0,0 +1 @@
|
||||||
|
FindOneBy{{.upperField}}(ctx context.Context, {{.in}}) (*{{.upperStartCamelObject}}, error)
|
|
@ -0,0 +1 @@
|
||||||
|
FindOne(ctx context.Context, {{.lowerStartCamelPrimaryKey}} {{.dataType}}) (*{{.upperStartCamelObject}}, error)
|
|
@ -0,0 +1 @@
|
||||||
|
Insert(ctx context.Context, data *{{.upperStartCamelObject}}) (sql.Result,error)
|
|
@ -0,0 +1 @@
|
||||||
|
Update(ctx context.Context, {{if .containsIndexCache}}newData{{else}}data{{end}} *{{.upperStartCamelObject}}) error
|
|
@ -0,0 +1,13 @@
|
||||||
|
// Code generated by goctl. DO NOT EDIT.
|
||||||
|
|
||||||
|
package {{.pkg}}
|
||||||
|
{{.imports}}
|
||||||
|
{{.vars}}
|
||||||
|
{{.types}}
|
||||||
|
{{.new}}
|
||||||
|
{{.delete}}
|
||||||
|
{{.find}}
|
||||||
|
{{.insert}}
|
||||||
|
{{.update}}
|
||||||
|
{{.extraMethod}}
|
||||||
|
{{.tableName}}
|
|
@ -0,0 +1,6 @@
|
||||||
|
func new{{.upperStartCamelObject}}Model(conn sqlx.SqlConn{{if .withCache}}, c cache.CacheConf{{end}}) *default{{.upperStartCamelObject}}Model {
|
||||||
|
return &default{{.upperStartCamelObject}}Model{
|
||||||
|
{{if .withCache}}CachedConn: sqlc.NewConn(conn, c){{else}}conn:conn{{end}},
|
||||||
|
table: {{.table}},
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,30 @@
|
||||||
|
package {{.pkg}}
|
||||||
|
{{if .withCache}}
|
||||||
|
import (
|
||||||
|
"github.com/zeromicro/go-zero/core/stores/cache"
|
||||||
|
"github.com/zeromicro/go-zero/core/stores/sqlx"
|
||||||
|
)
|
||||||
|
{{else}}
|
||||||
|
|
||||||
|
import "github.com/zeromicro/go-zero/core/stores/sqlx"
|
||||||
|
{{end}}
|
||||||
|
var _ {{.upperStartCamelObject}}Model = (*custom{{.upperStartCamelObject}}Model)(nil)
|
||||||
|
|
||||||
|
type (
|
||||||
|
// {{.upperStartCamelObject}}Model is an interface to be customized, add more methods here,
|
||||||
|
// and implement the added methods in custom{{.upperStartCamelObject}}Model.
|
||||||
|
{{.upperStartCamelObject}}Model interface {
|
||||||
|
{{.lowerStartCamelObject}}Model
|
||||||
|
}
|
||||||
|
|
||||||
|
custom{{.upperStartCamelObject}}Model struct {
|
||||||
|
*default{{.upperStartCamelObject}}Model
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
// New{{.upperStartCamelObject}}Model returns a model for the database table.
|
||||||
|
func New{{.upperStartCamelObject}}Model(conn sqlx.SqlConn{{if .withCache}}, c cache.CacheConf{{end}}) {{.upperStartCamelObject}}Model {
|
||||||
|
return &custom{{.upperStartCamelObject}}Model{
|
||||||
|
default{{.upperStartCamelObject}}Model: new{{.upperStartCamelObject}}Model(conn{{if .withCache}}, c{{end}}),
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,3 @@
|
||||||
|
func (m *default{{.upperStartCamelObject}}Model) tableName() string {
|
||||||
|
return m.table
|
||||||
|
}
|
|
@ -0,0 +1 @@
|
||||||
|
`db:"{{.field}}"`
|
|
@ -0,0 +1,14 @@
|
||||||
|
type (
|
||||||
|
{{.lowerStartCamelObject}}Model interface{
|
||||||
|
{{.method}}
|
||||||
|
}
|
||||||
|
|
||||||
|
default{{.upperStartCamelObject}}Model struct {
|
||||||
|
{{if .withCache}}sqlc.CachedConn{{else}}conn sqlx.SqlConn{{end}}
|
||||||
|
table string
|
||||||
|
}
|
||||||
|
|
||||||
|
{{.upperStartCamelObject}} struct {
|
||||||
|
{{.fields}}
|
||||||
|
}
|
||||||
|
)
|
|
@ -0,0 +1,14 @@
|
||||||
|
func (m *default{{.upperStartCamelObject}}Model) Update(ctx context.Context, {{if .containsIndexCache}}newData{{else}}data{{end}} *{{.upperStartCamelObject}}) error {
|
||||||
|
{{if .withCache}}{{if .containsIndexCache}}data, err:=m.FindOne(ctx, newData.{{.upperStartCamelPrimaryKey}})
|
||||||
|
if err!=nil{
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
{{end}} {{.keys}}
|
||||||
|
_, {{if .containsIndexCache}}err{{else}}err:{{end}}= m.ExecCtx(ctx, func(ctx context.Context, conn sqlx.SqlConn) (result sql.Result, err error) {
|
||||||
|
query := fmt.Sprintf("update %s set %s where {{.originalPrimaryKey}} = {{if .postgreSql}}$1{{else}}?{{end}}", m.table, {{.lowerStartCamelObject}}RowsWithPlaceHolder)
|
||||||
|
return conn.ExecCtx(ctx, query, {{.expressionValues}})
|
||||||
|
}, {{.keyValues}}){{else}}query := fmt.Sprintf("update %s set %s where {{.originalPrimaryKey}} = {{if .postgreSql}}$1{{else}}?{{end}}", m.table, {{.lowerStartCamelObject}}RowsWithPlaceHolder)
|
||||||
|
_,err:=m.conn.ExecCtx(ctx, query, {{.expressionValues}}){{end}}
|
||||||
|
return err
|
||||||
|
}
|
|
@ -0,0 +1,8 @@
|
||||||
|
var (
|
||||||
|
{{.lowerStartCamelObject}}FieldNames = builder.RawFieldNames(&{{.upperStartCamelObject}}{}{{if .postgreSql}}, true{{end}})
|
||||||
|
{{.lowerStartCamelObject}}Rows = strings.Join({{.lowerStartCamelObject}}FieldNames, ",")
|
||||||
|
{{.lowerStartCamelObject}}RowsExpectAutoSet = {{if .postgreSql}}strings.Join(stringx.Remove({{.lowerStartCamelObject}}FieldNames, {{if .autoIncrement}}"{{.originalPrimaryKey}}", {{end}} {{.ignoreColumns}}), ","){{else}}strings.Join(stringx.Remove({{.lowerStartCamelObject}}FieldNames, {{if .autoIncrement}}"{{.originalPrimaryKey}}", {{end}} {{.ignoreColumns}}), ","){{end}}
|
||||||
|
{{.lowerStartCamelObject}}RowsWithPlaceHolder = {{if .postgreSql}}builder.PostgreSqlJoin(stringx.Remove({{.lowerStartCamelObject}}FieldNames, "{{.originalPrimaryKey}}", {{.ignoreColumns}})){{else}}strings.Join(stringx.Remove({{.lowerStartCamelObject}}FieldNames, "{{.originalPrimaryKey}}", {{.ignoreColumns}}), "=?,") + "=?"{{end}}
|
||||||
|
|
||||||
|
{{if .withCache}}{{.cacheKeys}}{{end}}
|
||||||
|
)
|
|
@ -0,0 +1,12 @@
|
||||||
|
package model
|
||||||
|
|
||||||
|
import (
|
||||||
|
"errors"
|
||||||
|
|
||||||
|
"github.com/zeromicro/go-zero/core/stores/mon"
|
||||||
|
)
|
||||||
|
|
||||||
|
var (
|
||||||
|
ErrNotFound = mon.ErrNotFound
|
||||||
|
ErrInvalidObjectId = errors.New("invalid objectId")
|
||||||
|
)
|
|
@ -0,0 +1,78 @@
|
||||||
|
// Code generated by goctl. DO NOT EDIT.
|
||||||
|
package model
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"time"
|
||||||
|
|
||||||
|
{{if .Cache}}"github.com/zeromicro/go-zero/core/stores/monc"{{else}}"github.com/zeromicro/go-zero/core/stores/mon"{{end}}
|
||||||
|
"go.mongodb.org/mongo-driver/bson"
|
||||||
|
"go.mongodb.org/mongo-driver/bson/primitive"
|
||||||
|
"go.mongodb.org/mongo-driver/mongo"
|
||||||
|
)
|
||||||
|
|
||||||
|
{{if .Cache}}var prefix{{.Type}}CacheKey = "cache:{{.lowerType}}:"{{end}}
|
||||||
|
|
||||||
|
type {{.lowerType}}Model interface{
|
||||||
|
Insert(ctx context.Context,data *{{.Type}}) error
|
||||||
|
FindOne(ctx context.Context,id string) (*{{.Type}}, error)
|
||||||
|
Update(ctx context.Context,data *{{.Type}}) (*mongo.UpdateResult, error)
|
||||||
|
Delete(ctx context.Context,id string) (int64, error)
|
||||||
|
}
|
||||||
|
|
||||||
|
type default{{.Type}}Model struct {
|
||||||
|
conn {{if .Cache}}*monc.Model{{else}}*mon.Model{{end}}
|
||||||
|
}
|
||||||
|
|
||||||
|
func newDefault{{.Type}}Model(conn {{if .Cache}}*monc.Model{{else}}*mon.Model{{end}}) *default{{.Type}}Model {
|
||||||
|
return &default{{.Type}}Model{conn: conn}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
func (m *default{{.Type}}Model) Insert(ctx context.Context, data *{{.Type}}) error {
|
||||||
|
if data.ID.IsZero() {
|
||||||
|
data.ID = primitive.NewObjectID()
|
||||||
|
data.CreateAt = time.Now()
|
||||||
|
data.UpdateAt = time.Now()
|
||||||
|
}
|
||||||
|
|
||||||
|
{{if .Cache}}key := prefix{{.Type}}CacheKey + data.ID.Hex(){{end}}
|
||||||
|
_, err := m.conn.InsertOne(ctx, {{if .Cache}}key, {{end}} data)
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *default{{.Type}}Model) FindOne(ctx context.Context, id string) (*{{.Type}}, error) {
|
||||||
|
oid, err := primitive.ObjectIDFromHex(id)
|
||||||
|
if err != nil {
|
||||||
|
return nil, ErrInvalidObjectId
|
||||||
|
}
|
||||||
|
|
||||||
|
var data {{.Type}}
|
||||||
|
{{if .Cache}}key := prefix{{.Type}}CacheKey + id{{end}}
|
||||||
|
err = m.conn.FindOne(ctx, {{if .Cache}}key, {{end}}&data, bson.M{"_id": oid})
|
||||||
|
switch err {
|
||||||
|
case nil:
|
||||||
|
return &data, nil
|
||||||
|
case {{if .Cache}}monc{{else}}mon{{end}}.ErrNotFound:
|
||||||
|
return nil, ErrNotFound
|
||||||
|
default:
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *default{{.Type}}Model) Update(ctx context.Context, data *{{.Type}}) (*mongo.UpdateResult, error) {
|
||||||
|
data.UpdateAt = time.Now()
|
||||||
|
{{if .Cache}}key := prefix{{.Type}}CacheKey + data.ID.Hex(){{end}}
|
||||||
|
res, err := m.conn.UpdateOne(ctx, {{if .Cache}}key, {{end}}bson.M{"_id": data.ID}, bson.M{"$set": data})
|
||||||
|
return res, err
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *default{{.Type}}Model) Delete(ctx context.Context, id string) (int64, error) {
|
||||||
|
oid, err := primitive.ObjectIDFromHex(id)
|
||||||
|
if err != nil {
|
||||||
|
return 0, ErrInvalidObjectId
|
||||||
|
}
|
||||||
|
{{if .Cache}}key := prefix{{.Type}}CacheKey +id{{end}}
|
||||||
|
res, err := m.conn.DeleteOne(ctx, {{if .Cache}}key, {{end}}bson.M{"_id": oid})
|
||||||
|
return res, err
|
||||||
|
}
|
|
@ -0,0 +1,38 @@
|
||||||
|
package model
|
||||||
|
|
||||||
|
{{if .Cache}}import (
|
||||||
|
"github.com/zeromicro/go-zero/core/stores/cache"
|
||||||
|
"github.com/zeromicro/go-zero/core/stores/monc"
|
||||||
|
){{else}}import "github.com/zeromicro/go-zero/core/stores/mon"{{end}}
|
||||||
|
|
||||||
|
{{if .Easy}}
|
||||||
|
const {{.Type}}CollectionName = "{{.snakeType}}"
|
||||||
|
{{end}}
|
||||||
|
|
||||||
|
var _ {{.Type}}Model = (*custom{{.Type}}Model)(nil)
|
||||||
|
|
||||||
|
type (
|
||||||
|
// {{.Type}}Model is an interface to be customized, add more methods here,
|
||||||
|
// and implement the added methods in custom{{.Type}}Model.
|
||||||
|
{{.Type}}Model interface {
|
||||||
|
{{.lowerType}}Model
|
||||||
|
}
|
||||||
|
|
||||||
|
custom{{.Type}}Model struct {
|
||||||
|
*default{{.Type}}Model
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
// New{{.Type}}Model returns a model for the mongo.
|
||||||
|
{{if .Easy}}func New{{.Type}}Model(url, db string{{if .Cache}}, c cache.CacheConf{{end}}) {{.Type}}Model {
|
||||||
|
conn := {{if .Cache}}monc{{else}}mon{{end}}.MustNewModel(url, db, {{.Type}}CollectionName{{if .Cache}}, c{{end}})
|
||||||
|
return &custom{{.Type}}Model{
|
||||||
|
default{{.Type}}Model: newDefault{{.Type}}Model(conn),
|
||||||
|
}
|
||||||
|
}{{else}}func New{{.Type}}Model(url, db, collection string{{if .Cache}}, c cache.CacheConf{{end}}) {{.Type}}Model {
|
||||||
|
conn := {{if .Cache}}monc{{else}}mon{{end}}.MustNewModel(url, db, collection{{if .Cache}}, c{{end}})
|
||||||
|
return &custom{{.Type}}Model{
|
||||||
|
default{{.Type}}Model: newDefault{{.Type}}Model(conn),
|
||||||
|
}
|
||||||
|
}{{end}}
|
|
@ -0,0 +1,14 @@
|
||||||
|
package model
|
||||||
|
|
||||||
|
import (
|
||||||
|
"time"
|
||||||
|
|
||||||
|
"go.mongodb.org/mongo-driver/bson/primitive"
|
||||||
|
)
|
||||||
|
|
||||||
|
type {{.Type}} struct {
|
||||||
|
ID primitive.ObjectID `bson:"_id,omitempty" json:"id,omitempty"`
|
||||||
|
// TODO: Fill your own fields
|
||||||
|
UpdateAt time.Time `bson:"updateAt,omitempty" json:"updateAt,omitempty"`
|
||||||
|
CreateAt time.Time `bson:"createAt,omitempty" json:"createAt,omitempty"`
|
||||||
|
}
|
|
@ -0,0 +1,12 @@
|
||||||
|
type Request {
|
||||||
|
Name string `path:"name,options=you|me"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type Response {
|
||||||
|
Message string `json:"message"`
|
||||||
|
}
|
||||||
|
|
||||||
|
service {{.name}}-api {
|
||||||
|
@handler {{.handler}}Handler
|
||||||
|
get /from/:name(Request) returns (Response)
|
||||||
|
}
|
|
@ -0,0 +1,33 @@
|
||||||
|
{{.head}}
|
||||||
|
|
||||||
|
package {{.filePackage}}
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
|
||||||
|
{{.pbPackage}}
|
||||||
|
{{if ne .pbPackage .protoGoPackage}}{{.protoGoPackage}}{{end}}
|
||||||
|
|
||||||
|
"github.com/zeromicro/go-zero/zrpc"
|
||||||
|
"google.golang.org/grpc"
|
||||||
|
)
|
||||||
|
|
||||||
|
type (
|
||||||
|
{{.alias}}
|
||||||
|
|
||||||
|
{{.serviceName}} interface {
|
||||||
|
{{.interface}}
|
||||||
|
}
|
||||||
|
|
||||||
|
default{{.serviceName}} struct {
|
||||||
|
cli zrpc.Client
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
func New{{.serviceName}}(cli zrpc.Client) {{.serviceName}} {
|
||||||
|
return &default{{.serviceName}}{
|
||||||
|
cli: cli,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
{{.functions}}
|
|
@ -0,0 +1,7 @@
|
||||||
|
package config
|
||||||
|
|
||||||
|
import "github.com/zeromicro/go-zero/zrpc"
|
||||||
|
|
||||||
|
type Config struct {
|
||||||
|
zrpc.RpcServerConf
|
||||||
|
}
|
|
@ -0,0 +1,6 @@
|
||||||
|
Name: {{.serviceName}}.rpc
|
||||||
|
ListenOn: 0.0.0.0:8080
|
||||||
|
Etcd:
|
||||||
|
Hosts:
|
||||||
|
- 127.0.0.1:2379
|
||||||
|
Key: {{.serviceName}}.rpc
|
|
@ -0,0 +1,6 @@
|
||||||
|
{{if .hasComment}}{{.comment}}{{end}}
|
||||||
|
func (l *{{.logicName}}) {{.method}} ({{if .hasReq}}in {{.request}}{{if .stream}},stream {{.streamBody}}{{end}}{{else}}stream {{.streamBody}}{{end}}) ({{if .hasReply}}{{.response}},{{end}} error) {
|
||||||
|
// todo: add your logic here and delete this line
|
||||||
|
|
||||||
|
return {{if .hasReply}}&{{.responseType}}{},{{end}} nil
|
||||||
|
}
|
|
@ -0,0 +1,24 @@
|
||||||
|
package {{.packageName}}
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
|
||||||
|
{{.imports}}
|
||||||
|
|
||||||
|
"github.com/zeromicro/go-zero/core/logx"
|
||||||
|
)
|
||||||
|
|
||||||
|
type {{.logicName}} struct {
|
||||||
|
ctx context.Context
|
||||||
|
svcCtx *svc.ServiceContext
|
||||||
|
logx.Logger
|
||||||
|
}
|
||||||
|
|
||||||
|
func New{{.logicName}}(ctx context.Context,svcCtx *svc.ServiceContext) *{{.logicName}} {
|
||||||
|
return &{{.logicName}}{
|
||||||
|
ctx: ctx,
|
||||||
|
svcCtx: svcCtx,
|
||||||
|
Logger: logx.WithContext(ctx),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
{{.functions}}
|
|
@ -0,0 +1,36 @@
|
||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"flag"
|
||||||
|
"fmt"
|
||||||
|
|
||||||
|
{{.imports}}
|
||||||
|
|
||||||
|
"github.com/zeromicro/go-zero/core/conf"
|
||||||
|
"github.com/zeromicro/go-zero/core/service"
|
||||||
|
"github.com/zeromicro/go-zero/zrpc"
|
||||||
|
"google.golang.org/grpc"
|
||||||
|
"google.golang.org/grpc/reflection"
|
||||||
|
)
|
||||||
|
|
||||||
|
var configFile = flag.String("f", "etc/{{.serviceName}}.yaml", "the config file")
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
flag.Parse()
|
||||||
|
|
||||||
|
var c config.Config
|
||||||
|
conf.MustLoad(*configFile, &c)
|
||||||
|
ctx := svc.NewServiceContext(c)
|
||||||
|
|
||||||
|
s := zrpc.MustNewServer(c.RpcServerConf, func(grpcServer *grpc.Server) {
|
||||||
|
{{range .serviceNames}} {{.Pkg}}.Register{{.Service}}Server(grpcServer, {{.ServerPkg}}.New{{.Service}}Server(ctx))
|
||||||
|
{{end}}
|
||||||
|
if c.Mode == service.DevMode || c.Mode == service.TestMode {
|
||||||
|
reflection.Register(grpcServer)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
defer s.Stop()
|
||||||
|
|
||||||
|
fmt.Printf("Starting rpc server at %s...\n", c.ListenOn)
|
||||||
|
s.Start()
|
||||||
|
}
|
|
@ -0,0 +1,6 @@
|
||||||
|
|
||||||
|
{{if .hasComment}}{{.comment}}{{end}}
|
||||||
|
func (s *{{.server}}Server) {{.method}} ({{if .notStream}}ctx context.Context,{{if .hasReq}} in {{.request}}{{end}}{{else}}{{if .hasReq}} in {{.request}},{{end}}stream {{.streamBody}}{{end}}) ({{if .notStream}}{{.response}},{{end}}error) {
|
||||||
|
l := {{.logicPkg}}.New{{.logicName}}({{if .notStream}}ctx,{{else}}stream.Context(),{{end}}s.svcCtx)
|
||||||
|
return l.{{.method}}({{if .hasReq}}in{{if .stream}} ,stream{{end}}{{else}}{{if .stream}}stream{{end}}{{end}})
|
||||||
|
}
|
|
@ -0,0 +1,22 @@
|
||||||
|
{{.head}}
|
||||||
|
|
||||||
|
package server
|
||||||
|
|
||||||
|
import (
|
||||||
|
{{if .notStream}}"context"{{end}}
|
||||||
|
|
||||||
|
{{.imports}}
|
||||||
|
)
|
||||||
|
|
||||||
|
type {{.server}}Server struct {
|
||||||
|
svcCtx *svc.ServiceContext
|
||||||
|
{{.unimplementedServer}}
|
||||||
|
}
|
||||||
|
|
||||||
|
func New{{.server}}Server(svcCtx *svc.ServiceContext) *{{.server}}Server {
|
||||||
|
return &{{.server}}Server{
|
||||||
|
svcCtx: svcCtx,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
{{.funcs}}
|
|
@ -0,0 +1,13 @@
|
||||||
|
package svc
|
||||||
|
|
||||||
|
import {{.imports}}
|
||||||
|
|
||||||
|
type ServiceContext struct {
|
||||||
|
Config config.Config
|
||||||
|
}
|
||||||
|
|
||||||
|
func NewServiceContext(c config.Config) *ServiceContext {
|
||||||
|
return &ServiceContext{
|
||||||
|
Config:c,
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,16 @@
|
||||||
|
syntax = "proto3";
|
||||||
|
|
||||||
|
package {{.package}};
|
||||||
|
option go_package="./{{.package}}";
|
||||||
|
|
||||||
|
message Request {
|
||||||
|
string ping = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
message Response {
|
||||||
|
string pong = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
service {{.serviceName}} {
|
||||||
|
rpc Ping(Request) returns(Response);
|
||||||
|
}
|
3
go.mod
3
go.mod
|
@ -19,7 +19,7 @@ require (
|
||||||
gitlink.org.cn/jcce-pcm/pcm-participant-modelarts v0.0.0-20230714013255-149a9b428b28
|
gitlink.org.cn/jcce-pcm/pcm-participant-modelarts v0.0.0-20230714013255-149a9b428b28
|
||||||
gitlink.org.cn/jcce-pcm/pcm-participant-octopus v0.0.0-20230714012611-c66005610d0c
|
gitlink.org.cn/jcce-pcm/pcm-participant-octopus v0.0.0-20230714012611-c66005610d0c
|
||||||
gitlink.org.cn/jcce-pcm/pcm-participant-slurm v0.0.0-20230714015940-004100bfa168
|
gitlink.org.cn/jcce-pcm/pcm-participant-slurm v0.0.0-20230714015940-004100bfa168
|
||||||
gitlink.org.cn/jcce-pcm/utils v0.0.1
|
gitlink.org.cn/jcce-pcm/utils v0.0.0-20230724072501-2a0519bd57bd
|
||||||
google.golang.org/grpc v1.56.2
|
google.golang.org/grpc v1.56.2
|
||||||
google.golang.org/protobuf v1.31.0
|
google.golang.org/protobuf v1.31.0
|
||||||
gorm.io/driver/mysql v1.5.1
|
gorm.io/driver/mysql v1.5.1
|
||||||
|
@ -34,6 +34,7 @@ require (
|
||||||
github.com/aliyun/alibaba-cloud-sdk-go v1.61.1704 // indirect
|
github.com/aliyun/alibaba-cloud-sdk-go v1.61.1704 // indirect
|
||||||
github.com/beorn7/perks v1.0.1 // indirect
|
github.com/beorn7/perks v1.0.1 // indirect
|
||||||
github.com/buger/jsonparser v1.1.1 // indirect
|
github.com/buger/jsonparser v1.1.1 // indirect
|
||||||
|
github.com/bwmarrin/snowflake v0.3.0 // indirect
|
||||||
github.com/cenkalti/backoff/v4 v4.2.0 // indirect
|
github.com/cenkalti/backoff/v4 v4.2.0 // indirect
|
||||||
github.com/cespare/xxhash/v2 v2.2.0 // indirect
|
github.com/cespare/xxhash/v2 v2.2.0 // indirect
|
||||||
github.com/coreos/go-semver v0.3.1 // indirect
|
github.com/coreos/go-semver v0.3.1 // indirect
|
||||||
|
|
6
go.sum
6
go.sum
|
@ -444,6 +444,8 @@ github.com/bkaradzic/go-lz4 v1.0.0/go.mod h1:0YdlkowM3VswSROI7qDxhRvJ3sLhlFrRRwj
|
||||||
github.com/bufbuild/protocompile v0.4.0/go.mod h1:3v93+mbWn/v3xzN+31nwkJfrEpAUwp+BagBSZWx+TP8=
|
github.com/bufbuild/protocompile v0.4.0/go.mod h1:3v93+mbWn/v3xzN+31nwkJfrEpAUwp+BagBSZWx+TP8=
|
||||||
github.com/buger/jsonparser v1.1.1 h1:2PnMjfWD7wBILjqQbt530v576A/cAbQvEW9gGIpYMUs=
|
github.com/buger/jsonparser v1.1.1 h1:2PnMjfWD7wBILjqQbt530v576A/cAbQvEW9gGIpYMUs=
|
||||||
github.com/buger/jsonparser v1.1.1/go.mod h1:6RYKKt7H4d4+iWqouImQ9R2FZql3VbhNgx27UK13J/0=
|
github.com/buger/jsonparser v1.1.1/go.mod h1:6RYKKt7H4d4+iWqouImQ9R2FZql3VbhNgx27UK13J/0=
|
||||||
|
github.com/bwmarrin/snowflake v0.3.0 h1:xm67bEhkKh6ij1790JB83OujPR5CzNe8QuQqAgISZN0=
|
||||||
|
github.com/bwmarrin/snowflake v0.3.0/go.mod h1:NdZxfVWX+oR6y2K0o6qAYv6gIOP9rjG0/E9WsDpxqwE=
|
||||||
github.com/cenkalti/backoff/v4 v4.1.3/go.mod h1:scbssz8iZGpm3xbr14ovlUdkxfGXNInqkPWOWmG2CLw=
|
github.com/cenkalti/backoff/v4 v4.1.3/go.mod h1:scbssz8iZGpm3xbr14ovlUdkxfGXNInqkPWOWmG2CLw=
|
||||||
github.com/cenkalti/backoff/v4 v4.2.0 h1:HN5dHm3WBOgndBH6E8V0q2jIYIR3s9yglV8k/+MN3u4=
|
github.com/cenkalti/backoff/v4 v4.2.0 h1:HN5dHm3WBOgndBH6E8V0q2jIYIR3s9yglV8k/+MN3u4=
|
||||||
github.com/cenkalti/backoff/v4 v4.2.0/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE=
|
github.com/cenkalti/backoff/v4 v4.2.0/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE=
|
||||||
|
@ -1035,8 +1037,8 @@ gitlink.org.cn/jcce-pcm/pcm-participant-octopus v0.0.0-20230714012611-c66005610d
|
||||||
gitlink.org.cn/jcce-pcm/pcm-participant-octopus v0.0.0-20230714012611-c66005610d0c/go.mod h1:9Ad9vxCPGbY1yF1NhHWL2EhxsXJBB6bzz9i7PeSfKG4=
|
gitlink.org.cn/jcce-pcm/pcm-participant-octopus v0.0.0-20230714012611-c66005610d0c/go.mod h1:9Ad9vxCPGbY1yF1NhHWL2EhxsXJBB6bzz9i7PeSfKG4=
|
||||||
gitlink.org.cn/jcce-pcm/pcm-participant-slurm v0.0.0-20230714015940-004100bfa168 h1:BgTVUqJMOhdm6mNPx1ti5ClTnyMjZlCvH0avI1dz1xg=
|
gitlink.org.cn/jcce-pcm/pcm-participant-slurm v0.0.0-20230714015940-004100bfa168 h1:BgTVUqJMOhdm6mNPx1ti5ClTnyMjZlCvH0avI1dz1xg=
|
||||||
gitlink.org.cn/jcce-pcm/pcm-participant-slurm v0.0.0-20230714015940-004100bfa168/go.mod h1:lY3jXmmMvC7j4Q2ogliThURWp9c1XCToSCnRkdc1aW8=
|
gitlink.org.cn/jcce-pcm/pcm-participant-slurm v0.0.0-20230714015940-004100bfa168/go.mod h1:lY3jXmmMvC7j4Q2ogliThURWp9c1XCToSCnRkdc1aW8=
|
||||||
gitlink.org.cn/jcce-pcm/utils v0.0.1 h1:3PH93Z/JFTH5JRO9MFf3dD1Gnd12aGiIIViWBlQGuhE=
|
gitlink.org.cn/jcce-pcm/utils v0.0.0-20230724072501-2a0519bd57bd h1:A9i6TPZ58OwycgWNQpIMrjSIMK8lXmmakig7IkonrVA=
|
||||||
gitlink.org.cn/jcce-pcm/utils v0.0.1/go.mod h1:5cwaaqM0+HK5GXVbYozGlWvgwoUby0KytdvhbwQW1ks=
|
gitlink.org.cn/jcce-pcm/utils v0.0.0-20230724072501-2a0519bd57bd/go.mod h1:zTa+selMe02jZ3u6Ij1rTF2CrGd2ZqzqyMQ/FwhdpvY=
|
||||||
go.etcd.io/etcd/api/v3 v3.5.5/go.mod h1:KFtNaxGDw4Yx/BA4iPPwevUTAuqcsPxzyX8PHydchN8=
|
go.etcd.io/etcd/api/v3 v3.5.5/go.mod h1:KFtNaxGDw4Yx/BA4iPPwevUTAuqcsPxzyX8PHydchN8=
|
||||||
go.etcd.io/etcd/api/v3 v3.5.7/go.mod h1:9qew1gCdDDLu+VwmeG+iFpL+QlpHTo7iubavdVDgCAA=
|
go.etcd.io/etcd/api/v3 v3.5.7/go.mod h1:9qew1gCdDDLu+VwmeG+iFpL+QlpHTo7iubavdVDgCAA=
|
||||||
go.etcd.io/etcd/api/v3 v3.5.9 h1:4wSsluwyTbGGmyjJktOf3wFQoTBIURXHnq9n/G/JQHs=
|
go.etcd.io/etcd/api/v3 v3.5.9 h1:4wSsluwyTbGGmyjJktOf3wFQoTBIURXHnq9n/G/JQHs=
|
||||||
|
|
|
@ -1,5 +1,12 @@
|
||||||
package model
|
package model
|
||||||
|
|
||||||
|
import (
|
||||||
|
"github.com/zeromicro/go-zero/core/stores/cache"
|
||||||
|
"github.com/zeromicro/go-zero/core/stores/sqlx"
|
||||||
|
)
|
||||||
|
|
||||||
|
var _ ScNodeAvailInfoModel = (*customScNodeAvailInfoModel)(nil)
|
||||||
|
|
||||||
type (
|
type (
|
||||||
// ScNodeAvailInfoModel is an interface to be customized, add more methods here,
|
// ScNodeAvailInfoModel is an interface to be customized, add more methods here,
|
||||||
// and implement the added methods in customScNodeAvailInfoModel.
|
// and implement the added methods in customScNodeAvailInfoModel.
|
||||||
|
@ -11,3 +18,10 @@ type (
|
||||||
*defaultScNodeAvailInfoModel
|
*defaultScNodeAvailInfoModel
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
|
// NewScNodeAvailInfoModel returns a model for the database table.
|
||||||
|
func NewScNodeAvailInfoModel(conn sqlx.SqlConn, c cache.CacheConf, opts ...cache.Option) ScNodeAvailInfoModel {
|
||||||
|
return &customScNodeAvailInfoModel{
|
||||||
|
defaultScNodeAvailInfoModel: newScNodeAvailInfoModel(conn, c, opts...),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -5,6 +5,7 @@ package model
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
"database/sql"
|
"database/sql"
|
||||||
|
"fmt"
|
||||||
"strings"
|
"strings"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
@ -38,22 +39,22 @@ type (
|
||||||
}
|
}
|
||||||
|
|
||||||
ScNodeAvailInfo struct {
|
ScNodeAvailInfo struct {
|
||||||
Id int64 `db:"id"` // id
|
Id int64 `db:"id"` // id
|
||||||
NodeName string `db:"node_name"` // 节点名称
|
NodeName sql.NullString `db:"node_name"` // 节点名称
|
||||||
CpuTotal int64 `db:"cpu_total"` // cpu核数
|
CpuTotal sql.NullInt64 `db:"cpu_total"` // cpu核数
|
||||||
CpuUsable float64 `db:"cpu_usable"` // cpu可用率
|
CpuUsable sql.NullFloat64 `db:"cpu_usable"` // cpu可用率
|
||||||
DiskTotal int64 `db:"disk_total"` // 磁盘空间
|
DiskTotal sql.NullInt64 `db:"disk_total"` // 磁盘空间
|
||||||
DiskAvail int64 `db:"disk_avail"` // 磁盘可用空间
|
DiskAvail sql.NullInt64 `db:"disk_avail"` // 磁盘可用空间
|
||||||
MemTotal int64 `db:"mem_total"` // 内存总数
|
MemTotal sql.NullInt64 `db:"mem_total"` // 内存总数
|
||||||
MemAvail int64 `db:"mem_avail"` // 内存可用数
|
MemAvail sql.NullInt64 `db:"mem_avail"` // 内存可用数
|
||||||
GpuTotal int64 `db:"gpu_total"` // gpu总数
|
GpuTotal sql.NullInt64 `db:"gpu_total"` // gpu总数
|
||||||
GpuAvail int64 `db:"gpu_avail"` // gpu可用数
|
GpuAvail sql.NullInt64 `db:"gpu_avail"` // gpu可用数
|
||||||
ParticipantId int64 `db:"participant_id"` // 集群静态信息id
|
ParticipantId int64 `db:"participant_id"` // 集群静态信息id
|
||||||
DeletedFlag int64 `db:"deleted_flag"` // 是否删除
|
DeletedFlag int64 `db:"deleted_flag"` // 是否删除
|
||||||
CreatedBy int64 `db:"created_by"` // 创建人
|
CreatedBy sql.NullInt64 `db:"created_by"` // 创建人
|
||||||
CreatedTime time.Time `db:"created_time"` // 创建时间
|
CreatedTime time.Time `db:"created_time"` // 创建时间
|
||||||
UpdatedBy int64 `db:"updated_by"` // 更新人
|
UpdatedBy sql.NullInt64 `db:"updated_by"` // 更新人
|
||||||
UpdatedTime time.Time `db:"updated_time"` // 更新时间
|
UpdatedTime sql.NullTime `db:"updated_time"` // 更新时间
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -70,6 +71,60 @@ func (m *defaultScNodeAvailInfoModel) withSession(session sqlx.Session) *default
|
||||||
table: "`sc_node_avail_info`",
|
table: "`sc_node_avail_info`",
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (m *defaultScNodeAvailInfoModel) Delete(ctx context.Context, id int64) error {
|
||||||
|
pcmScNodeAvailInfoIdKey := fmt.Sprintf("%s%v", cachePcmScNodeAvailInfoIdPrefix, id)
|
||||||
|
_, err := m.ExecCtx(ctx, func(ctx context.Context, conn sqlx.SqlConn) (result sql.Result, err error) {
|
||||||
|
query := fmt.Sprintf("delete from %s where `id` = ?", m.table)
|
||||||
|
return conn.ExecCtx(ctx, query, id)
|
||||||
|
}, pcmScNodeAvailInfoIdKey)
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *defaultScNodeAvailInfoModel) FindOne(ctx context.Context, id int64) (*ScNodeAvailInfo, error) {
|
||||||
|
pcmScNodeAvailInfoIdKey := fmt.Sprintf("%s%v", cachePcmScNodeAvailInfoIdPrefix, id)
|
||||||
|
var resp ScNodeAvailInfo
|
||||||
|
err := m.QueryRowCtx(ctx, &resp, pcmScNodeAvailInfoIdKey, func(ctx context.Context, conn sqlx.SqlConn, v any) error {
|
||||||
|
query := fmt.Sprintf("select %s from %s where `id` = ? limit 1", scNodeAvailInfoRows, m.table)
|
||||||
|
return conn.QueryRowCtx(ctx, v, query, id)
|
||||||
|
})
|
||||||
|
switch err {
|
||||||
|
case nil:
|
||||||
|
return &resp, nil
|
||||||
|
case sqlc.ErrNotFound:
|
||||||
|
return nil, ErrNotFound
|
||||||
|
default:
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *defaultScNodeAvailInfoModel) Insert(ctx context.Context, data *ScNodeAvailInfo) (sql.Result, error) {
|
||||||
|
pcmScNodeAvailInfoIdKey := fmt.Sprintf("%s%v", cachePcmScNodeAvailInfoIdPrefix, data.Id)
|
||||||
|
ret, err := m.ExecCtx(ctx, func(ctx context.Context, conn sqlx.SqlConn) (result sql.Result, err error) {
|
||||||
|
query := fmt.Sprintf("insert into %s (%s) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", m.table, scNodeAvailInfoRowsExpectAutoSet)
|
||||||
|
return conn.ExecCtx(ctx, query, data.Id, data.NodeName, data.CpuTotal, data.CpuUsable, data.DiskTotal, data.DiskAvail, data.MemTotal, data.MemAvail, data.GpuTotal, data.GpuAvail, data.ParticipantId, data.DeletedFlag, data.CreatedBy, data.CreatedTime, data.UpdatedBy, data.UpdatedTime)
|
||||||
|
}, pcmScNodeAvailInfoIdKey)
|
||||||
|
return ret, err
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *defaultScNodeAvailInfoModel) Update(ctx context.Context, data *ScNodeAvailInfo) error {
|
||||||
|
pcmScNodeAvailInfoIdKey := fmt.Sprintf("%s%v", cachePcmScNodeAvailInfoIdPrefix, data.Id)
|
||||||
|
_, err := m.ExecCtx(ctx, func(ctx context.Context, conn sqlx.SqlConn) (result sql.Result, err error) {
|
||||||
|
query := fmt.Sprintf("update %s set %s where `id` = ?", m.table, scNodeAvailInfoRowsWithPlaceHolder)
|
||||||
|
return conn.ExecCtx(ctx, query, data.NodeName, data.CpuTotal, data.CpuUsable, data.DiskTotal, data.DiskAvail, data.MemTotal, data.MemAvail, data.GpuTotal, data.GpuAvail, data.ParticipantId, data.DeletedFlag, data.CreatedBy, data.CreatedTime, data.UpdatedBy, data.UpdatedTime, data.Id)
|
||||||
|
}, pcmScNodeAvailInfoIdKey)
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *defaultScNodeAvailInfoModel) formatPrimary(primary any) string {
|
||||||
|
return fmt.Sprintf("%s%v", cachePcmScNodeAvailInfoIdPrefix, primary)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *defaultScNodeAvailInfoModel) queryPrimary(ctx context.Context, conn sqlx.SqlConn, v, primary any) error {
|
||||||
|
query := fmt.Sprintf("select %s from %s where `id` = ? limit 1", scNodeAvailInfoRows, m.table)
|
||||||
|
return conn.QueryRowCtx(ctx, v, query, primary)
|
||||||
|
}
|
||||||
|
|
||||||
func (m *defaultScNodeAvailInfoModel) tableName() string {
|
func (m *defaultScNodeAvailInfoModel) tableName() string {
|
||||||
return m.table
|
return m.table
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,12 @@
|
||||||
package model
|
package model
|
||||||
|
|
||||||
|
import (
|
||||||
|
"github.com/zeromicro/go-zero/core/stores/cache"
|
||||||
|
"github.com/zeromicro/go-zero/core/stores/sqlx"
|
||||||
|
)
|
||||||
|
|
||||||
|
var _ ScNodePhyInfoModel = (*customScNodePhyInfoModel)(nil)
|
||||||
|
|
||||||
type (
|
type (
|
||||||
// ScNodePhyInfoModel is an interface to be customized, add more methods here,
|
// ScNodePhyInfoModel is an interface to be customized, add more methods here,
|
||||||
// and implement the added methods in customScNodePhyInfoModel.
|
// and implement the added methods in customScNodePhyInfoModel.
|
||||||
|
@ -11,3 +18,10 @@ type (
|
||||||
*defaultScNodePhyInfoModel
|
*defaultScNodePhyInfoModel
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
|
// NewScNodePhyInfoModel returns a model for the database table.
|
||||||
|
func NewScNodePhyInfoModel(conn sqlx.SqlConn, c cache.CacheConf, opts ...cache.Option) ScNodePhyInfoModel {
|
||||||
|
return &customScNodePhyInfoModel{
|
||||||
|
defaultScNodePhyInfoModel: newScNodePhyInfoModel(conn, c, opts...),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -39,19 +39,19 @@ type (
|
||||||
}
|
}
|
||||||
|
|
||||||
ScNodePhyInfo struct {
|
ScNodePhyInfo struct {
|
||||||
Id int64 `db:"id"` // id
|
Id int64 `db:"id"` // id
|
||||||
NodeName string `db:"node_name"` // 节点名称
|
NodeName string `db:"node_name"` // 节点名称
|
||||||
OsName string `db:"os_name"` // 系统名称
|
OsName string `db:"os_name"` // 系统名称
|
||||||
OsVersion int64 `db:"os_version"` // 系统版本
|
OsVersion int64 `db:"os_version"` // 系统版本
|
||||||
ArchType string `db:"arch_type"` // 架构类型
|
ArchType string `db:"arch_type"` // 架构类型
|
||||||
ArchName string `db:"arch_name"` // 架构名称
|
ArchName string `db:"arch_name"` // 架构名称
|
||||||
ArchFreq string `db:"arch_freq"` // 架构频率
|
ArchFreq string `db:"arch_freq"` // 架构频率
|
||||||
ParticipantId int64 `db:"participant_id"` // 集群静态信息id
|
ParticipantId int64 `db:"participant_id"` // 集群静态信息id
|
||||||
DeletedFlag int64 `db:"deleted_flag"` // 是否删除
|
DeletedFlag int64 `db:"deleted_flag"` // 是否删除
|
||||||
CreatedBy int64 `db:"created_by"` // 创建人
|
CreatedBy sql.NullInt64 `db:"created_by"` // 创建人
|
||||||
CreatedTime time.Time `db:"created_time"` // 创建时间
|
CreatedTime time.Time `db:"created_time"` // 创建时间
|
||||||
UpdatedBy int64 `db:"updated_by"` // 更新人
|
UpdatedBy sql.NullInt64 `db:"updated_by"` // 更新人
|
||||||
UpdatedTime time.Time `db:"updated_time"` // 更新时间
|
UpdatedTime sql.NullTime `db:"updated_time"` // 更新时间
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -95,6 +95,33 @@ func (m *defaultScNodePhyInfoModel) FindOne(ctx context.Context, id int64) (*ScN
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (m *defaultScNodePhyInfoModel) Insert(ctx context.Context, data *ScNodePhyInfo) (sql.Result, error) {
|
||||||
|
pcmScNodePhyInfoIdKey := fmt.Sprintf("%s%v", cachePcmScNodePhyInfoIdPrefix, data.Id)
|
||||||
|
ret, err := m.ExecCtx(ctx, func(ctx context.Context, conn sqlx.SqlConn) (result sql.Result, err error) {
|
||||||
|
query := fmt.Sprintf("insert into %s (%s) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", m.table, scNodePhyInfoRowsExpectAutoSet)
|
||||||
|
return conn.ExecCtx(ctx, query, data.Id, data.NodeName, data.OsName, data.OsVersion, data.ArchType, data.ArchName, data.ArchFreq, data.ParticipantId, data.DeletedFlag, data.CreatedBy, data.CreatedTime, data.UpdatedBy, data.UpdatedTime)
|
||||||
|
}, pcmScNodePhyInfoIdKey)
|
||||||
|
return ret, err
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *defaultScNodePhyInfoModel) Update(ctx context.Context, data *ScNodePhyInfo) error {
|
||||||
|
pcmScNodePhyInfoIdKey := fmt.Sprintf("%s%v", cachePcmScNodePhyInfoIdPrefix, data.Id)
|
||||||
|
_, err := m.ExecCtx(ctx, func(ctx context.Context, conn sqlx.SqlConn) (result sql.Result, err error) {
|
||||||
|
query := fmt.Sprintf("update %s set %s where `id` = ?", m.table, scNodePhyInfoRowsWithPlaceHolder)
|
||||||
|
return conn.ExecCtx(ctx, query, data.NodeName, data.OsName, data.OsVersion, data.ArchType, data.ArchName, data.ArchFreq, data.ParticipantId, data.DeletedFlag, data.CreatedBy, data.CreatedTime, data.UpdatedBy, data.UpdatedTime, data.Id)
|
||||||
|
}, pcmScNodePhyInfoIdKey)
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *defaultScNodePhyInfoModel) formatPrimary(primary any) string {
|
||||||
|
return fmt.Sprintf("%s%v", cachePcmScNodePhyInfoIdPrefix, primary)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *defaultScNodePhyInfoModel) queryPrimary(ctx context.Context, conn sqlx.SqlConn, v, primary any) error {
|
||||||
|
query := fmt.Sprintf("select %s from %s where `id` = ? limit 1", scNodePhyInfoRows, m.table)
|
||||||
|
return conn.QueryRowCtx(ctx, v, query, primary)
|
||||||
|
}
|
||||||
|
|
||||||
func (m *defaultScNodePhyInfoModel) tableName() string {
|
func (m *defaultScNodePhyInfoModel) tableName() string {
|
||||||
return m.table
|
return m.table
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,12 @@
|
||||||
package model
|
package model
|
||||||
|
|
||||||
|
import (
|
||||||
|
"github.com/zeromicro/go-zero/core/stores/cache"
|
||||||
|
"github.com/zeromicro/go-zero/core/stores/sqlx"
|
||||||
|
)
|
||||||
|
|
||||||
|
var _ ScParticipantAvailInfoModel = (*customScParticipantAvailInfoModel)(nil)
|
||||||
|
|
||||||
type (
|
type (
|
||||||
// ScParticipantAvailInfoModel is an interface to be customized, add more methods here,
|
// ScParticipantAvailInfoModel is an interface to be customized, add more methods here,
|
||||||
// and implement the added methods in customScParticipantAvailInfoModel.
|
// and implement the added methods in customScParticipantAvailInfoModel.
|
||||||
|
@ -11,3 +18,10 @@ type (
|
||||||
*defaultScParticipantAvailInfoModel
|
*defaultScParticipantAvailInfoModel
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
|
// NewScParticipantAvailInfoModel returns a model for the database table.
|
||||||
|
func NewScParticipantAvailInfoModel(conn sqlx.SqlConn, c cache.CacheConf, opts ...cache.Option) ScParticipantAvailInfoModel {
|
||||||
|
return &customScParticipantAvailInfoModel{
|
||||||
|
defaultScParticipantAvailInfoModel: newScParticipantAvailInfoModel(conn, c, opts...),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -5,6 +5,7 @@ package model
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
"database/sql"
|
"database/sql"
|
||||||
|
"fmt"
|
||||||
"strings"
|
"strings"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
@ -38,19 +39,19 @@ type (
|
||||||
}
|
}
|
||||||
|
|
||||||
ScParticipantAvailInfo struct {
|
ScParticipantAvailInfo struct {
|
||||||
Id int64 `db:"id"` // id
|
Id int64 `db:"id"` // id
|
||||||
Host string `db:"host"` // 集群p端host
|
Host sql.NullString `db:"host"` // 集群p端host
|
||||||
Port string `db:"port"` // 集群p端端口
|
Port sql.NullString `db:"port"` // 集群p端端口
|
||||||
AvailStorageSpace int64 `db:"avail_storage_space"` // 集群存储可用空间
|
AvailStorageSpace sql.NullInt64 `db:"avail_storage_space"` // 集群存储可用空间
|
||||||
UserNum int64 `db:"user_num"` // 用户数量
|
UserNum sql.NullInt64 `db:"user_num"` // 用户数量
|
||||||
PendingJobNum int64 `db:"pending_job_num"` // 待处理作业数量
|
PendingJobNum sql.NullInt64 `db:"pending_job_num"` // 待处理作业数量
|
||||||
RunningJobNum int64 `db:"running_job_num"` // 运行作业数量
|
RunningJobNum int64 `db:"running_job_num"` // 运行作业数量
|
||||||
ParticipantId int64 `db:"participant_id"` // 集群静态信息id
|
ParticipantId int64 `db:"participant_id"` // 集群静态信息id
|
||||||
DeletedFlag int64 `db:"deleted_flag"` // 是否删除
|
DeletedFlag int64 `db:"deleted_flag"` // 是否删除
|
||||||
CreatedBy sql.NullInt64 `db:"created_by"` // 创建人
|
CreatedBy sql.NullInt64 `db:"created_by"` // 创建人
|
||||||
CreatedTime time.Time `db:"created_time"` // 创建时间
|
CreatedTime time.Time `db:"created_time"` // 创建时间
|
||||||
UpdatedBy sql.NullInt64 `db:"updated_by"` // 更新人
|
UpdatedBy sql.NullInt64 `db:"updated_by"` // 更新人
|
||||||
UpdatedTime sql.NullTime `db:"updated_time"` // 更新时间
|
UpdatedTime sql.NullTime `db:"updated_time"` // 更新时间
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -68,6 +69,59 @@ func (m *defaultScParticipantAvailInfoModel) withSession(session sqlx.Session) *
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (m *defaultScParticipantAvailInfoModel) Delete(ctx context.Context, id int64) error {
|
||||||
|
pcmScParticipantAvailInfoIdKey := fmt.Sprintf("%s%v", cachePcmScParticipantAvailInfoIdPrefix, id)
|
||||||
|
_, err := m.ExecCtx(ctx, func(ctx context.Context, conn sqlx.SqlConn) (result sql.Result, err error) {
|
||||||
|
query := fmt.Sprintf("delete from %s where `id` = ?", m.table)
|
||||||
|
return conn.ExecCtx(ctx, query, id)
|
||||||
|
}, pcmScParticipantAvailInfoIdKey)
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *defaultScParticipantAvailInfoModel) FindOne(ctx context.Context, id int64) (*ScParticipantAvailInfo, error) {
|
||||||
|
pcmScParticipantAvailInfoIdKey := fmt.Sprintf("%s%v", cachePcmScParticipantAvailInfoIdPrefix, id)
|
||||||
|
var resp ScParticipantAvailInfo
|
||||||
|
err := m.QueryRowCtx(ctx, &resp, pcmScParticipantAvailInfoIdKey, func(ctx context.Context, conn sqlx.SqlConn, v any) error {
|
||||||
|
query := fmt.Sprintf("select %s from %s where `id` = ? limit 1", scParticipantAvailInfoRows, m.table)
|
||||||
|
return conn.QueryRowCtx(ctx, v, query, id)
|
||||||
|
})
|
||||||
|
switch err {
|
||||||
|
case nil:
|
||||||
|
return &resp, nil
|
||||||
|
case sqlc.ErrNotFound:
|
||||||
|
return nil, ErrNotFound
|
||||||
|
default:
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *defaultScParticipantAvailInfoModel) Insert(ctx context.Context, data *ScParticipantAvailInfo) (sql.Result, error) {
|
||||||
|
pcmScParticipantAvailInfoIdKey := fmt.Sprintf("%s%v", cachePcmScParticipantAvailInfoIdPrefix, data.Id)
|
||||||
|
ret, err := m.ExecCtx(ctx, func(ctx context.Context, conn sqlx.SqlConn) (result sql.Result, err error) {
|
||||||
|
query := fmt.Sprintf("insert into %s (%s) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", m.table, scParticipantAvailInfoRowsExpectAutoSet)
|
||||||
|
return conn.ExecCtx(ctx, query, data.Id, data.Host, data.Port, data.AvailStorageSpace, data.UserNum, data.PendingJobNum, data.RunningJobNum, data.ParticipantId, data.DeletedFlag, data.CreatedBy, data.CreatedTime, data.UpdatedBy, data.UpdatedTime)
|
||||||
|
}, pcmScParticipantAvailInfoIdKey)
|
||||||
|
return ret, err
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *defaultScParticipantAvailInfoModel) Update(ctx context.Context, data *ScParticipantAvailInfo) error {
|
||||||
|
pcmScParticipantAvailInfoIdKey := fmt.Sprintf("%s%v", cachePcmScParticipantAvailInfoIdPrefix, data.Id)
|
||||||
|
_, err := m.ExecCtx(ctx, func(ctx context.Context, conn sqlx.SqlConn) (result sql.Result, err error) {
|
||||||
|
query := fmt.Sprintf("update %s set %s where `id` = ?", m.table, scParticipantAvailInfoRowsWithPlaceHolder)
|
||||||
|
return conn.ExecCtx(ctx, query, data.Host, data.Port, data.AvailStorageSpace, data.UserNum, data.PendingJobNum, data.RunningJobNum, data.ParticipantId, data.DeletedFlag, data.CreatedBy, data.CreatedTime, data.UpdatedBy, data.UpdatedTime, data.Id)
|
||||||
|
}, pcmScParticipantAvailInfoIdKey)
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *defaultScParticipantAvailInfoModel) formatPrimary(primary any) string {
|
||||||
|
return fmt.Sprintf("%s%v", cachePcmScParticipantAvailInfoIdPrefix, primary)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *defaultScParticipantAvailInfoModel) queryPrimary(ctx context.Context, conn sqlx.SqlConn, v, primary any) error {
|
||||||
|
query := fmt.Sprintf("select %s from %s where `id` = ? limit 1", scParticipantAvailInfoRows, m.table)
|
||||||
|
return conn.QueryRowCtx(ctx, v, query, primary)
|
||||||
|
}
|
||||||
|
|
||||||
func (m *defaultScParticipantAvailInfoModel) tableName() string {
|
func (m *defaultScParticipantAvailInfoModel) tableName() string {
|
||||||
return m.table
|
return m.table
|
||||||
}
|
}
|
||||||
|
|
|
@ -40,6 +40,8 @@ type (
|
||||||
|
|
||||||
ScParticipantPhyInfo struct {
|
ScParticipantPhyInfo struct {
|
||||||
Id int64 `db:"id"` // id
|
Id int64 `db:"id"` // id
|
||||||
|
Host string `db:"host"` // 集群p端host
|
||||||
|
Port string `db:"port"` // 集群p端端口
|
||||||
NetworkType string `db:"network_type"` // 集群网络类型
|
NetworkType string `db:"network_type"` // 集群网络类型
|
||||||
NetworkBandwidth string `db:"network_bandwidth"` // 集群网络带宽
|
NetworkBandwidth string `db:"network_bandwidth"` // 集群网络带宽
|
||||||
StorageType string `db:"storage_type"` // 集群存储类型
|
StorageType string `db:"storage_type"` // 集群存储类型
|
||||||
|
@ -47,6 +49,7 @@ type (
|
||||||
StorageAvailSpace string `db:"storage_avail_space"` // 集群存储可用空间
|
StorageAvailSpace string `db:"storage_avail_space"` // 集群存储可用空间
|
||||||
StorageBandwidth string `db:"storage_bandwidth"` // 集群存储带宽
|
StorageBandwidth string `db:"storage_bandwidth"` // 集群存储带宽
|
||||||
TenantId int64 `db:"tenant_id"` // 租户信息id
|
TenantId int64 `db:"tenant_id"` // 租户信息id
|
||||||
|
Type int64 `db:"type"` // 类型:0-数算集群;1-智算集群;2-超算集群
|
||||||
DeletedFlag int64 `db:"deleted_flag"` // 是否删除
|
DeletedFlag int64 `db:"deleted_flag"` // 是否删除
|
||||||
CreatedBy sql.NullInt64 `db:"created_by"` // 创建人
|
CreatedBy sql.NullInt64 `db:"created_by"` // 创建人
|
||||||
CreatedTime time.Time `db:"created_time"` // 创建时间
|
CreatedTime time.Time `db:"created_time"` // 创建时间
|
||||||
|
@ -98,8 +101,8 @@ func (m *defaultScParticipantPhyInfoModel) FindOne(ctx context.Context, id int64
|
||||||
func (m *defaultScParticipantPhyInfoModel) Insert(ctx context.Context, data *ScParticipantPhyInfo) (sql.Result, error) {
|
func (m *defaultScParticipantPhyInfoModel) Insert(ctx context.Context, data *ScParticipantPhyInfo) (sql.Result, error) {
|
||||||
pcmScParticipantPhyInfoIdKey := fmt.Sprintf("%s%v", cachePcmScParticipantPhyInfoIdPrefix, data.Id)
|
pcmScParticipantPhyInfoIdKey := fmt.Sprintf("%s%v", cachePcmScParticipantPhyInfoIdPrefix, data.Id)
|
||||||
ret, err := m.ExecCtx(ctx, func(ctx context.Context, conn sqlx.SqlConn) (result sql.Result, err error) {
|
ret, err := m.ExecCtx(ctx, func(ctx context.Context, conn sqlx.SqlConn) (result sql.Result, err error) {
|
||||||
query := fmt.Sprintf("insert into %s (%s) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", m.table, scParticipantPhyInfoRowsExpectAutoSet)
|
query := fmt.Sprintf("insert into %s (%s) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", m.table, scParticipantPhyInfoRowsExpectAutoSet)
|
||||||
return conn.ExecCtx(ctx, query, data.Id, data.NetworkType, data.NetworkBandwidth, data.StorageType, data.StorageSpace, data.StorageAvailSpace, data.StorageBandwidth, data.TenantId, data.DeletedFlag, data.CreatedBy, data.CreatedTime, data.UpdatedBy, data.UpdatedTime)
|
return conn.ExecCtx(ctx, query, data.Id, data.Host, data.Port, data.NetworkType, data.NetworkBandwidth, data.StorageType, data.StorageSpace, data.StorageAvailSpace, data.StorageBandwidth, data.TenantId, data.Type, data.DeletedFlag, data.CreatedBy, data.CreatedTime, data.UpdatedBy, data.UpdatedTime)
|
||||||
}, pcmScParticipantPhyInfoIdKey)
|
}, pcmScParticipantPhyInfoIdKey)
|
||||||
return ret, err
|
return ret, err
|
||||||
}
|
}
|
||||||
|
@ -108,7 +111,7 @@ func (m *defaultScParticipantPhyInfoModel) Update(ctx context.Context, data *ScP
|
||||||
pcmScParticipantPhyInfoIdKey := fmt.Sprintf("%s%v", cachePcmScParticipantPhyInfoIdPrefix, data.Id)
|
pcmScParticipantPhyInfoIdKey := fmt.Sprintf("%s%v", cachePcmScParticipantPhyInfoIdPrefix, data.Id)
|
||||||
_, err := m.ExecCtx(ctx, func(ctx context.Context, conn sqlx.SqlConn) (result sql.Result, err error) {
|
_, err := m.ExecCtx(ctx, func(ctx context.Context, conn sqlx.SqlConn) (result sql.Result, err error) {
|
||||||
query := fmt.Sprintf("update %s set %s where `id` = ?", m.table, scParticipantPhyInfoRowsWithPlaceHolder)
|
query := fmt.Sprintf("update %s set %s where `id` = ?", m.table, scParticipantPhyInfoRowsWithPlaceHolder)
|
||||||
return conn.ExecCtx(ctx, query, data.NetworkType, data.NetworkBandwidth, data.StorageType, data.StorageSpace, data.StorageAvailSpace, data.StorageBandwidth, data.TenantId, data.DeletedFlag, data.CreatedBy, data.CreatedTime, data.UpdatedBy, data.UpdatedTime, data.Id)
|
return conn.ExecCtx(ctx, query, data.Host, data.Port, data.NetworkType, data.NetworkBandwidth, data.StorageType, data.StorageSpace, data.StorageAvailSpace, data.StorageBandwidth, data.TenantId, data.Type, data.DeletedFlag, data.CreatedBy, data.CreatedTime, data.UpdatedBy, data.UpdatedTime, data.Id)
|
||||||
}, pcmScParticipantPhyInfoIdKey)
|
}, pcmScParticipantPhyInfoIdKey)
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,5 @@
|
||||||
|
pcm-core-rpc:
|
||||||
|
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o pcm-core-rpc adaptor/PCM-CORE/rpc/pcmcore.go
|
||||||
|
|
||||||
|
rpc-gen:
|
||||||
|
goctl rpc protoc pb/*.proto --go_out=. --go-grpc_out=. --zrpc_out=. -m
|
|
@ -0,0 +1,49 @@
|
||||||
|
// Code generated by goctl. DO NOT EDIT.
|
||||||
|
// Source: pcmCore.proto
|
||||||
|
|
||||||
|
package participantservice
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
|
||||||
|
"gitlink.org.cn/jcce-pcm/pcm-coordinator/rpc/pcmCore"
|
||||||
|
|
||||||
|
"github.com/zeromicro/go-zero/zrpc"
|
||||||
|
"google.golang.org/grpc"
|
||||||
|
)
|
||||||
|
|
||||||
|
type (
|
||||||
|
AiInfo = pcmCore.AiInfo
|
||||||
|
CloudInfo = pcmCore.CloudInfo
|
||||||
|
HpcInfo = pcmCore.HpcInfo
|
||||||
|
InfoListReq = pcmCore.InfoListReq
|
||||||
|
InfoListResp = pcmCore.InfoListResp
|
||||||
|
NodeLabel = pcmCore.NodeLabel
|
||||||
|
NodePhyInfo = pcmCore.NodePhyInfo
|
||||||
|
ParticipantPhyReq = pcmCore.ParticipantPhyReq
|
||||||
|
ParticipantPhyResp = pcmCore.ParticipantPhyResp
|
||||||
|
ParticipantTenant = pcmCore.ParticipantTenant
|
||||||
|
SyncInfoReq = pcmCore.SyncInfoReq
|
||||||
|
SyncInfoResp = pcmCore.SyncInfoResp
|
||||||
|
|
||||||
|
ParticipantService interface {
|
||||||
|
// registerParticipant Participant注册接口
|
||||||
|
RegisterParticipant(ctx context.Context, in *ParticipantPhyReq, opts ...grpc.CallOption) (*ParticipantPhyResp, error)
|
||||||
|
}
|
||||||
|
|
||||||
|
defaultParticipantService struct {
|
||||||
|
cli zrpc.Client
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
func NewParticipantService(cli zrpc.Client) ParticipantService {
|
||||||
|
return &defaultParticipantService{
|
||||||
|
cli: cli,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// registerParticipant Participant注册接口
|
||||||
|
func (m *defaultParticipantService) RegisterParticipant(ctx context.Context, in *ParticipantPhyReq, opts ...grpc.CallOption) (*ParticipantPhyResp, error) {
|
||||||
|
client := pcmCore.NewParticipantServiceClient(m.cli.Conn())
|
||||||
|
return client.RegisterParticipant(ctx, in, opts...)
|
||||||
|
}
|
|
@ -1,7 +1,7 @@
|
||||||
// Code generated by goctl. DO NOT EDIT.
|
// Code generated by goctl. DO NOT EDIT.
|
||||||
// Source: pcmCore.proto
|
// Source: pcmCore.proto
|
||||||
|
|
||||||
package pcmcoreclient
|
package pcmcore
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
|
@ -13,13 +13,18 @@ import (
|
||||||
)
|
)
|
||||||
|
|
||||||
type (
|
type (
|
||||||
AiInfo = pcmCore.AiInfo
|
AiInfo = pcmCore.AiInfo
|
||||||
CloudInfo = pcmCore.CloudInfo
|
CloudInfo = pcmCore.CloudInfo
|
||||||
HpcInfo = pcmCore.HpcInfo
|
HpcInfo = pcmCore.HpcInfo
|
||||||
InfoListReq = pcmCore.InfoListReq
|
InfoListReq = pcmCore.InfoListReq
|
||||||
InfoListResp = pcmCore.InfoListResp
|
InfoListResp = pcmCore.InfoListResp
|
||||||
SyncInfoReq = pcmCore.SyncInfoReq
|
NodeLabel = pcmCore.NodeLabel
|
||||||
SyncInfoResp = pcmCore.SyncInfoResp
|
NodePhyInfo = pcmCore.NodePhyInfo
|
||||||
|
ParticipantPhyReq = pcmCore.ParticipantPhyReq
|
||||||
|
ParticipantPhyResp = pcmCore.ParticipantPhyResp
|
||||||
|
ParticipantTenant = pcmCore.ParticipantTenant
|
||||||
|
SyncInfoReq = pcmCore.SyncInfoReq
|
||||||
|
SyncInfoResp = pcmCore.SyncInfoResp
|
||||||
|
|
||||||
PcmCore interface {
|
PcmCore interface {
|
||||||
// SyncInfo Synchronous data information
|
// SyncInfo Synchronous data information
|
|
@ -4,7 +4,7 @@ NacosConfig:
|
||||||
ServerConfigs:
|
ServerConfigs:
|
||||||
# - IpAddr: 127.0.0.1
|
# - IpAddr: 127.0.0.1
|
||||||
# Port: 8848
|
# Port: 8848
|
||||||
- IpAddr: nacos.jcce.dev
|
- IpAddr: 10.101.15.7
|
||||||
Port: 8848
|
Port: 8848
|
||||||
ClientConfig:
|
ClientConfig:
|
||||||
NamespaceId: test
|
NamespaceId: test
|
||||||
|
|
|
@ -10,5 +10,11 @@ type Config struct {
|
||||||
DB struct {
|
DB struct {
|
||||||
DataSource string
|
DataSource string
|
||||||
}
|
}
|
||||||
LogConf logx.LogConf
|
LogConf logx.LogConf
|
||||||
|
SnowflakeConf SnowflakeConf
|
||||||
|
}
|
||||||
|
|
||||||
|
// SnowflakeConf 雪花算法机器id配置
|
||||||
|
type SnowflakeConf struct {
|
||||||
|
MachineId int64 `json:"machineId"`
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,71 @@
|
||||||
|
package participantservicelogic
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"gitlink.org.cn/jcce-pcm/pcm-coordinator/model"
|
||||||
|
"gitlink.org.cn/jcce-pcm/utils/tool"
|
||||||
|
"time"
|
||||||
|
|
||||||
|
"gitlink.org.cn/jcce-pcm/pcm-coordinator/rpc/internal/svc"
|
||||||
|
"gitlink.org.cn/jcce-pcm/pcm-coordinator/rpc/pcmCore"
|
||||||
|
|
||||||
|
"github.com/zeromicro/go-zero/core/logx"
|
||||||
|
)
|
||||||
|
|
||||||
|
type RegisterParticipantLogic struct {
|
||||||
|
ctx context.Context
|
||||||
|
svcCtx *svc.ServiceContext
|
||||||
|
logx.Logger
|
||||||
|
}
|
||||||
|
|
||||||
|
func NewRegisterParticipantLogic(ctx context.Context, svcCtx *svc.ServiceContext) *RegisterParticipantLogic {
|
||||||
|
return &RegisterParticipantLogic{
|
||||||
|
ctx: ctx,
|
||||||
|
svcCtx: svcCtx,
|
||||||
|
Logger: logx.WithContext(ctx),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// RegisterParticipant Participant注册接口
|
||||||
|
func (l *RegisterParticipantLogic) RegisterParticipant(in *pcmCore.ParticipantPhyReq) (*pcmCore.ParticipantPhyResp, error) {
|
||||||
|
//判断ParticipantId是否存在
|
||||||
|
db := l.svcCtx.DbEngin
|
||||||
|
if db.Error != nil {
|
||||||
|
return nil, db.Error
|
||||||
|
}
|
||||||
|
participantInfo := &model.ScParticipantPhyInfo{}
|
||||||
|
tool.Convert(in, participantInfo)
|
||||||
|
if in.ParticipantId == 0 {
|
||||||
|
var err error
|
||||||
|
participantInfo.Id, err = tool.GenSnowflakeID(l.svcCtx.Config.SnowflakeConf.MachineId)
|
||||||
|
if err != nil {
|
||||||
|
logx.Errorf("生成id错误 err:", err)
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
participantInfo.Id = in.ParticipantId
|
||||||
|
}
|
||||||
|
participantInfo.CreatedTime = time.Now()
|
||||||
|
//保存participant静态信息
|
||||||
|
result := db.Save(&participantInfo)
|
||||||
|
//保存节点信息
|
||||||
|
nodeInfo := &model.ScNodePhyInfo{}
|
||||||
|
for _, info := range in.NodeInfo {
|
||||||
|
var err error
|
||||||
|
tool.Convert(info, nodeInfo)
|
||||||
|
nodeInfo.CreatedTime = time.Now()
|
||||||
|
nodeInfo.ParticipantId = participantInfo.Id
|
||||||
|
nodeInfo.Id, err = tool.GenSnowflakeID(l.svcCtx.Config.SnowflakeConf.MachineId)
|
||||||
|
if err != nil {
|
||||||
|
logx.Errorf("生成id错误 err:", err)
|
||||||
|
}
|
||||||
|
result = db.Save(nodeInfo)
|
||||||
|
if result.Error != nil {
|
||||||
|
logx.Errorf("orm err:", result.Error)
|
||||||
|
return &pcmCore.ParticipantPhyResp{}, nil
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if result.Error != nil {
|
||||||
|
logx.Errorf("orm err:", result.Error)
|
||||||
|
}
|
||||||
|
return &pcmCore.ParticipantPhyResp{}, nil
|
||||||
|
}
|
|
@ -1,4 +1,4 @@
|
||||||
package logic
|
package pcmcorelogic
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
|
@ -1,4 +1,4 @@
|
||||||
package logic
|
package pcmcorelogic
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
|
@ -0,0 +1,29 @@
|
||||||
|
// Code generated by goctl. DO NOT EDIT.
|
||||||
|
// Source: pcmCore.proto
|
||||||
|
|
||||||
|
package server
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
|
||||||
|
"gitlink.org.cn/jcce-pcm/pcm-coordinator/rpc/internal/logic/participantservice"
|
||||||
|
"gitlink.org.cn/jcce-pcm/pcm-coordinator/rpc/internal/svc"
|
||||||
|
"gitlink.org.cn/jcce-pcm/pcm-coordinator/rpc/pcmCore"
|
||||||
|
)
|
||||||
|
|
||||||
|
type ParticipantServiceServer struct {
|
||||||
|
svcCtx *svc.ServiceContext
|
||||||
|
pcmCore.UnimplementedParticipantServiceServer
|
||||||
|
}
|
||||||
|
|
||||||
|
func NewParticipantServiceServer(svcCtx *svc.ServiceContext) *ParticipantServiceServer {
|
||||||
|
return &ParticipantServiceServer{
|
||||||
|
svcCtx: svcCtx,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// registerParticipant Participant注册接口
|
||||||
|
func (s *ParticipantServiceServer) RegisterParticipant(ctx context.Context, in *pcmCore.ParticipantPhyReq) (*pcmCore.ParticipantPhyResp, error) {
|
||||||
|
l := participantservicelogic.NewRegisterParticipantLogic(ctx, s.svcCtx)
|
||||||
|
return l.RegisterParticipant(in)
|
||||||
|
}
|
|
@ -6,7 +6,7 @@ package server
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
|
|
||||||
"gitlink.org.cn/jcce-pcm/pcm-coordinator/rpc/internal/logic"
|
"gitlink.org.cn/jcce-pcm/pcm-coordinator/rpc/internal/logic/pcmcore"
|
||||||
"gitlink.org.cn/jcce-pcm/pcm-coordinator/rpc/internal/svc"
|
"gitlink.org.cn/jcce-pcm/pcm-coordinator/rpc/internal/svc"
|
||||||
"gitlink.org.cn/jcce-pcm/pcm-coordinator/rpc/pcmCore"
|
"gitlink.org.cn/jcce-pcm/pcm-coordinator/rpc/pcmCore"
|
||||||
)
|
)
|
||||||
|
@ -24,12 +24,12 @@ func NewPcmCoreServer(svcCtx *svc.ServiceContext) *PcmCoreServer {
|
||||||
|
|
||||||
// SyncInfo Synchronous data information
|
// SyncInfo Synchronous data information
|
||||||
func (s *PcmCoreServer) SyncInfo(ctx context.Context, in *pcmCore.SyncInfoReq) (*pcmCore.SyncInfoResp, error) {
|
func (s *PcmCoreServer) SyncInfo(ctx context.Context, in *pcmCore.SyncInfoReq) (*pcmCore.SyncInfoResp, error) {
|
||||||
l := logic.NewSyncInfoLogic(ctx, s.svcCtx)
|
l := pcmcorelogic.NewSyncInfoLogic(ctx, s.svcCtx)
|
||||||
return l.SyncInfo(in)
|
return l.SyncInfo(in)
|
||||||
}
|
}
|
||||||
|
|
||||||
// InfoList
|
// InfoList
|
||||||
func (s *PcmCoreServer) InfoList(ctx context.Context, in *pcmCore.InfoListReq) (*pcmCore.InfoListResp, error) {
|
func (s *PcmCoreServer) InfoList(ctx context.Context, in *pcmCore.InfoListReq) (*pcmCore.InfoListResp, error) {
|
||||||
l := logic.NewInfoListLogic(ctx, s.svcCtx)
|
l := pcmcorelogic.NewInfoListLogic(ctx, s.svcCtx)
|
||||||
return l.InfoList(in)
|
return l.InfoList(in)
|
||||||
}
|
}
|
|
@ -20,13 +20,13 @@ message AiInfo {
|
||||||
string startTime = 6;
|
string startTime = 6;
|
||||||
int64 runningTime = 7;
|
int64 runningTime = 7;
|
||||||
string result = 8;
|
string result = 8;
|
||||||
string jobId =9;
|
string jobId = 9;
|
||||||
string createTime = 10;
|
string createTime = 10;
|
||||||
string imageUrl =11;
|
string imageUrl = 11;
|
||||||
string command = 12;
|
string command = 12;
|
||||||
string flavorId =13;
|
string flavorId = 13;
|
||||||
string subscriptionId =14;
|
string subscriptionId = 14;
|
||||||
string itemVersionId =15;
|
string itemVersionId = 15;
|
||||||
}
|
}
|
||||||
|
|
||||||
message CloudInfo {
|
message CloudInfo {
|
||||||
|
@ -57,13 +57,13 @@ message HpcInfo {
|
||||||
string wallTime = 10;
|
string wallTime = 10;
|
||||||
string cmdScript = 11;
|
string cmdScript = 11;
|
||||||
string derivedEs = 12;
|
string derivedEs = 12;
|
||||||
string cluster =13;
|
string cluster = 13;
|
||||||
string blockId = 14;
|
string blockId = 14;
|
||||||
uint32 allocNodes = 15;
|
uint32 allocNodes = 15;
|
||||||
uint32 allocCpu =16;
|
uint32 allocCpu = 16;
|
||||||
string version = 17;
|
string version = 17;
|
||||||
string account =18;
|
string account = 18;
|
||||||
uint32 exitCode =19;
|
uint32 exitCode = 19;
|
||||||
uint32 assocId = 20;
|
uint32 assocId = 20;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -84,7 +84,6 @@ message InfoListResp{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// pcm core services
|
// pcm core services
|
||||||
service pcmCore {
|
service pcmCore {
|
||||||
|
|
||||||
|
@ -93,5 +92,67 @@ service pcmCore {
|
||||||
|
|
||||||
//InfoList
|
//InfoList
|
||||||
rpc InfoList(InfoListReq) returns (InfoListResp);
|
rpc InfoList(InfoListReq) returns (InfoListResp);
|
||||||
|
}
|
||||||
|
|
||||||
|
// participantTenant 租户信息
|
||||||
|
message participantTenant{
|
||||||
|
string tenantName = 1; //租户名称
|
||||||
|
}
|
||||||
|
|
||||||
|
// 节点标签
|
||||||
|
message NodeLabel {
|
||||||
|
string id = 1; //id
|
||||||
|
string label = 2; //标签名称
|
||||||
|
}
|
||||||
|
|
||||||
|
enum MessageStatus {
|
||||||
|
FAIL = 0;
|
||||||
|
SUCCESS = 1;
|
||||||
|
UNKNOWN = 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
message ParticipantPhyResp {
|
||||||
|
int64 code = 1;
|
||||||
|
string msg = 2;
|
||||||
|
string participantId = 3; //participant 唯一标识
|
||||||
|
}
|
||||||
|
|
||||||
|
//participantPhy 静态信息
|
||||||
|
message ParticipantPhyReq {
|
||||||
|
string host = 2; //host
|
||||||
|
string port = 3; //端口号
|
||||||
|
string networkType = 4; //集群网络类型
|
||||||
|
string networkBandwidth = 5; //集群网络带宽
|
||||||
|
string storageType = 6; //集群存储类型
|
||||||
|
string storageSpace = 7; //集群存储空间
|
||||||
|
string storageAvailSpace = 8; //集群存储可用空间
|
||||||
|
string storageBandwidth = 9; //集群存储带宽
|
||||||
|
string type = 10; //参与者类型:0-数算集群;1-智算集群;2-超算集群
|
||||||
|
int64 tenantId = 11; //租户id
|
||||||
|
string tenantName = 12; //租户名称
|
||||||
|
repeated NodePhyInfo nodeInfo = 13; //节点信息
|
||||||
|
int64 participantId = 14; //participant id
|
||||||
|
}
|
||||||
|
|
||||||
|
// nodePhyInfo 节点信息
|
||||||
|
message NodePhyInfo {
|
||||||
|
string nodeName = 1; //节点名称
|
||||||
|
string osName = 2; //系统名称
|
||||||
|
string osVersion = 3; //系统版本
|
||||||
|
string archType = 4; //架构类型
|
||||||
|
string archName = 5; //架构名称
|
||||||
|
string archFreq = 6; //架构频率
|
||||||
|
repeated NodeLabel nodeLabel = 7; //节点标签
|
||||||
|
}
|
||||||
|
|
||||||
|
// participant 参与者
|
||||||
|
service participantService {
|
||||||
|
// registerParticipant Participant注册接口
|
||||||
|
rpc registerParticipant (ParticipantPhyReq) returns (ParticipantPhyResp) {};
|
||||||
|
// //集群心跳
|
||||||
|
// rpc reportHeartbeat (ClusterHeartbeatMessageProto) returns (MessageResponseProto) {};
|
||||||
|
// //集群动态信息
|
||||||
|
// rpc reportAvailResource (ClusterAvailResMessageProto) returns (MessageResponseProto) {};
|
||||||
|
// //集群静态信息
|
||||||
|
// rpc reportPhysicResource (ClusterPhyResMessageProto) returns (MessageResponseProto) {};
|
||||||
}
|
}
|
File diff suppressed because it is too large
Load Diff
|
@ -1,8 +1,8 @@
|
||||||
// Code generated by protoc-gen-go-grpc. DO NOT EDIT.
|
// Code generated by protoc-gen-go-grpc. DO NOT EDIT.
|
||||||
// versions:
|
// versions:
|
||||||
// - protoc-gen-go-grpc v1.3.0
|
// - protoc-gen-go-grpc v1.3.0
|
||||||
// - protoc v4.22.2
|
// - protoc v4.23.4
|
||||||
// source: pcmCore.proto
|
// source: pb/pcmCore.proto
|
||||||
|
|
||||||
package pcmCore
|
package pcmCore
|
||||||
|
|
||||||
|
@ -146,5 +146,97 @@ var PcmCore_ServiceDesc = grpc.ServiceDesc{
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
Streams: []grpc.StreamDesc{},
|
Streams: []grpc.StreamDesc{},
|
||||||
Metadata: "pcmCore.proto",
|
Metadata: "pb/pcmCore.proto",
|
||||||
|
}
|
||||||
|
|
||||||
|
const (
|
||||||
|
ParticipantService_RegisterParticipant_FullMethodName = "/pcmCore.participantService/registerParticipant"
|
||||||
|
)
|
||||||
|
|
||||||
|
// ParticipantServiceClient is the client API for ParticipantService service.
|
||||||
|
//
|
||||||
|
// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream.
|
||||||
|
type ParticipantServiceClient interface {
|
||||||
|
// registerParticipant Participant注册接口
|
||||||
|
RegisterParticipant(ctx context.Context, in *ParticipantPhyReq, opts ...grpc.CallOption) (*ParticipantPhyResp, error)
|
||||||
|
}
|
||||||
|
|
||||||
|
type participantServiceClient struct {
|
||||||
|
cc grpc.ClientConnInterface
|
||||||
|
}
|
||||||
|
|
||||||
|
func NewParticipantServiceClient(cc grpc.ClientConnInterface) ParticipantServiceClient {
|
||||||
|
return &participantServiceClient{cc}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *participantServiceClient) RegisterParticipant(ctx context.Context, in *ParticipantPhyReq, opts ...grpc.CallOption) (*ParticipantPhyResp, error) {
|
||||||
|
out := new(ParticipantPhyResp)
|
||||||
|
err := c.cc.Invoke(ctx, ParticipantService_RegisterParticipant_FullMethodName, in, out, opts...)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return out, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// ParticipantServiceServer is the server API for ParticipantService service.
|
||||||
|
// All implementations must embed UnimplementedParticipantServiceServer
|
||||||
|
// for forward compatibility
|
||||||
|
type ParticipantServiceServer interface {
|
||||||
|
// registerParticipant Participant注册接口
|
||||||
|
RegisterParticipant(context.Context, *ParticipantPhyReq) (*ParticipantPhyResp, error)
|
||||||
|
mustEmbedUnimplementedParticipantServiceServer()
|
||||||
|
}
|
||||||
|
|
||||||
|
// UnimplementedParticipantServiceServer must be embedded to have forward compatible implementations.
|
||||||
|
type UnimplementedParticipantServiceServer struct {
|
||||||
|
}
|
||||||
|
|
||||||
|
func (UnimplementedParticipantServiceServer) RegisterParticipant(context.Context, *ParticipantPhyReq) (*ParticipantPhyResp, error) {
|
||||||
|
return nil, status.Errorf(codes.Unimplemented, "method RegisterParticipant not implemented")
|
||||||
|
}
|
||||||
|
func (UnimplementedParticipantServiceServer) mustEmbedUnimplementedParticipantServiceServer() {}
|
||||||
|
|
||||||
|
// UnsafeParticipantServiceServer may be embedded to opt out of forward compatibility for this service.
|
||||||
|
// Use of this interface is not recommended, as added methods to ParticipantServiceServer will
|
||||||
|
// result in compilation errors.
|
||||||
|
type UnsafeParticipantServiceServer interface {
|
||||||
|
mustEmbedUnimplementedParticipantServiceServer()
|
||||||
|
}
|
||||||
|
|
||||||
|
func RegisterParticipantServiceServer(s grpc.ServiceRegistrar, srv ParticipantServiceServer) {
|
||||||
|
s.RegisterService(&ParticipantService_ServiceDesc, srv)
|
||||||
|
}
|
||||||
|
|
||||||
|
func _ParticipantService_RegisterParticipant_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
|
||||||
|
in := new(ParticipantPhyReq)
|
||||||
|
if err := dec(in); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
if interceptor == nil {
|
||||||
|
return srv.(ParticipantServiceServer).RegisterParticipant(ctx, in)
|
||||||
|
}
|
||||||
|
info := &grpc.UnaryServerInfo{
|
||||||
|
Server: srv,
|
||||||
|
FullMethod: ParticipantService_RegisterParticipant_FullMethodName,
|
||||||
|
}
|
||||||
|
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
|
||||||
|
return srv.(ParticipantServiceServer).RegisterParticipant(ctx, req.(*ParticipantPhyReq))
|
||||||
|
}
|
||||||
|
return interceptor(ctx, in, info, handler)
|
||||||
|
}
|
||||||
|
|
||||||
|
// ParticipantService_ServiceDesc is the grpc.ServiceDesc for ParticipantService service.
|
||||||
|
// It's only intended for direct use with grpc.RegisterService,
|
||||||
|
// and not to be introspected or modified (even as a copy)
|
||||||
|
var ParticipantService_ServiceDesc = grpc.ServiceDesc{
|
||||||
|
ServiceName: "pcmCore.participantService",
|
||||||
|
HandlerType: (*ParticipantServiceServer)(nil),
|
||||||
|
Methods: []grpc.MethodDesc{
|
||||||
|
{
|
||||||
|
MethodName: "registerParticipant",
|
||||||
|
Handler: _ParticipantService_RegisterParticipant_Handler,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
Streams: []grpc.StreamDesc{},
|
||||||
|
Metadata: "pb/pcmCore.proto",
|
||||||
}
|
}
|
||||||
|
|
|
@ -8,7 +8,8 @@ import (
|
||||||
"github.com/zeromicro/go-zero/zrpc"
|
"github.com/zeromicro/go-zero/zrpc"
|
||||||
"gitlink.org.cn/jcce-pcm/pcm-coordinator/rpc/internal/config"
|
"gitlink.org.cn/jcce-pcm/pcm-coordinator/rpc/internal/config"
|
||||||
"gitlink.org.cn/jcce-pcm/pcm-coordinator/rpc/internal/logic"
|
"gitlink.org.cn/jcce-pcm/pcm-coordinator/rpc/internal/logic"
|
||||||
"gitlink.org.cn/jcce-pcm/pcm-coordinator/rpc/internal/server"
|
participantserviceServer "gitlink.org.cn/jcce-pcm/pcm-coordinator/rpc/internal/server/participantservice"
|
||||||
|
pcmcoreServer "gitlink.org.cn/jcce-pcm/pcm-coordinator/rpc/internal/server/pcmcore"
|
||||||
"gitlink.org.cn/jcce-pcm/pcm-coordinator/rpc/internal/svc"
|
"gitlink.org.cn/jcce-pcm/pcm-coordinator/rpc/internal/svc"
|
||||||
"gitlink.org.cn/jcce-pcm/pcm-coordinator/rpc/pcmCore"
|
"gitlink.org.cn/jcce-pcm/pcm-coordinator/rpc/pcmCore"
|
||||||
"gitlink.org.cn/jcce-pcm/utils/interceptor/rpcserver"
|
"gitlink.org.cn/jcce-pcm/utils/interceptor/rpcserver"
|
||||||
|
@ -48,8 +49,8 @@ func main() {
|
||||||
ctx := svc.NewServiceContext(c)
|
ctx := svc.NewServiceContext(c)
|
||||||
|
|
||||||
s := zrpc.MustNewServer(c.RpcServerConf, func(grpcServer *grpc.Server) {
|
s := zrpc.MustNewServer(c.RpcServerConf, func(grpcServer *grpc.Server) {
|
||||||
pcmCore.RegisterPcmCoreServer(grpcServer, server.NewPcmCoreServer(ctx))
|
pcmCore.RegisterPcmCoreServer(grpcServer, pcmcoreServer.NewPcmCoreServer(ctx))
|
||||||
|
pcmCore.RegisterParticipantServiceServer(grpcServer, participantserviceServer.NewParticipantServiceServer(ctx))
|
||||||
if c.Mode == service.DevMode || c.Mode == service.TestMode {
|
if c.Mode == service.DevMode || c.Mode == service.TestMode {
|
||||||
reflection.Register(grpcServer)
|
reflection.Register(grpcServer)
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue