refactor: fixed dependency errors

This commit is contained in:
Marvin Zhang
2024-11-01 14:08:30 +08:00
parent 8ffba2944d
commit ca5bbe6c8f
56 changed files with 3753 additions and 3791 deletions

View File

@@ -19,16 +19,16 @@ var (
mu sync.Mutex
)
type ModelServiceV2[T any] struct {
type ModelService[T any] struct {
cfg interfaces.NodeConfigService
c *client.GrpcClient
modelType string
}
func (svc *ModelServiceV2[T]) GetById(id primitive.ObjectID) (model *T, err error) {
func (svc *ModelService[T]) GetById(id primitive.ObjectID) (model *T, err error) {
ctx, cancel := svc.c.Context()
defer cancel()
res, err := svc.c.ModelBaseServiceV2Client.GetById(ctx, &grpc.ModelServiceV2GetByIdRequest{
res, err := svc.c.ModelBaseServiceClient.GetById(ctx, &grpc.ModelServiceGetByIdRequest{
NodeKey: svc.cfg.GetNodeKey(),
ModelType: svc.modelType,
Id: id.Hex(),
@@ -39,7 +39,7 @@ func (svc *ModelServiceV2[T]) GetById(id primitive.ObjectID) (model *T, err erro
return svc.deserializeOne(res)
}
func (svc *ModelServiceV2[T]) GetOne(query bson.M, options *mongo.FindOptions) (model *T, err error) {
func (svc *ModelService[T]) GetOne(query bson.M, options *mongo.FindOptions) (model *T, err error) {
ctx, cancel := svc.c.Context()
defer cancel()
queryData, err := json.Marshal(query)
@@ -50,7 +50,7 @@ func (svc *ModelServiceV2[T]) GetOne(query bson.M, options *mongo.FindOptions) (
if err != nil {
return nil, err
}
res, err := svc.c.ModelBaseServiceV2Client.GetOne(ctx, &grpc.ModelServiceV2GetOneRequest{
res, err := svc.c.ModelBaseServiceClient.GetOne(ctx, &grpc.ModelServiceGetOneRequest{
NodeKey: svc.cfg.GetNodeKey(),
ModelType: svc.modelType,
Query: queryData,
@@ -62,7 +62,7 @@ func (svc *ModelServiceV2[T]) GetOne(query bson.M, options *mongo.FindOptions) (
return svc.deserializeOne(res)
}
func (svc *ModelServiceV2[T]) GetMany(query bson.M, options *mongo.FindOptions) (models []T, err error) {
func (svc *ModelService[T]) GetMany(query bson.M, options *mongo.FindOptions) (models []T, err error) {
ctx, cancel := svc.c.Context()
defer cancel()
queryData, err := json.Marshal(query)
@@ -73,7 +73,7 @@ func (svc *ModelServiceV2[T]) GetMany(query bson.M, options *mongo.FindOptions)
if err != nil {
return nil, err
}
res, err := svc.c.ModelBaseServiceV2Client.GetMany(ctx, &grpc.ModelServiceV2GetManyRequest{
res, err := svc.c.ModelBaseServiceClient.GetMany(ctx, &grpc.ModelServiceGetManyRequest{
NodeKey: svc.cfg.GetNodeKey(),
ModelType: svc.modelType,
Query: queryData,
@@ -85,10 +85,10 @@ func (svc *ModelServiceV2[T]) GetMany(query bson.M, options *mongo.FindOptions)
return svc.deserializeMany(res)
}
func (svc *ModelServiceV2[T]) DeleteById(id primitive.ObjectID) (err error) {
func (svc *ModelService[T]) DeleteById(id primitive.ObjectID) (err error) {
ctx, cancel := svc.c.Context()
defer cancel()
_, err = svc.c.ModelBaseServiceV2Client.DeleteById(ctx, &grpc.ModelServiceV2DeleteByIdRequest{
_, err = svc.c.ModelBaseServiceClient.DeleteById(ctx, &grpc.ModelServiceDeleteByIdRequest{
NodeKey: svc.cfg.GetNodeKey(),
ModelType: svc.modelType,
Id: id.Hex(),
@@ -99,14 +99,14 @@ func (svc *ModelServiceV2[T]) DeleteById(id primitive.ObjectID) (err error) {
return nil
}
func (svc *ModelServiceV2[T]) DeleteOne(query bson.M) (err error) {
func (svc *ModelService[T]) DeleteOne(query bson.M) (err error) {
ctx, cancel := svc.c.Context()
defer cancel()
queryData, err := json.Marshal(query)
if err != nil {
return err
}
_, err = svc.c.ModelBaseServiceV2Client.DeleteOne(ctx, &grpc.ModelServiceV2DeleteOneRequest{
_, err = svc.c.ModelBaseServiceClient.DeleteOne(ctx, &grpc.ModelServiceDeleteOneRequest{
NodeKey: svc.cfg.GetNodeKey(),
ModelType: svc.modelType,
Query: queryData,
@@ -117,14 +117,14 @@ func (svc *ModelServiceV2[T]) DeleteOne(query bson.M) (err error) {
return nil
}
func (svc *ModelServiceV2[T]) DeleteMany(query bson.M) (err error) {
func (svc *ModelService[T]) DeleteMany(query bson.M) (err error) {
ctx, cancel := svc.c.Context()
defer cancel()
queryData, err := json.Marshal(query)
if err != nil {
return err
}
_, err = svc.c.ModelBaseServiceV2Client.DeleteMany(ctx, &grpc.ModelServiceV2DeleteManyRequest{
_, err = svc.c.ModelBaseServiceClient.DeleteMany(ctx, &grpc.ModelServiceDeleteManyRequest{
NodeKey: svc.cfg.GetNodeKey(),
ModelType: svc.modelType,
Query: queryData,
@@ -135,14 +135,14 @@ func (svc *ModelServiceV2[T]) DeleteMany(query bson.M) (err error) {
return nil
}
func (svc *ModelServiceV2[T]) UpdateById(id primitive.ObjectID, update bson.M) (err error) {
func (svc *ModelService[T]) UpdateById(id primitive.ObjectID, update bson.M) (err error) {
ctx, cancel := svc.c.Context()
defer cancel()
updateData, err := json.Marshal(update)
if err != nil {
return err
}
_, err = svc.c.ModelBaseServiceV2Client.UpdateById(ctx, &grpc.ModelServiceV2UpdateByIdRequest{
_, err = svc.c.ModelBaseServiceClient.UpdateById(ctx, &grpc.ModelServiceUpdateByIdRequest{
NodeKey: svc.cfg.GetNodeKey(),
ModelType: svc.modelType,
Id: id.Hex(),
@@ -154,7 +154,7 @@ func (svc *ModelServiceV2[T]) UpdateById(id primitive.ObjectID, update bson.M) (
return nil
}
func (svc *ModelServiceV2[T]) UpdateOne(query bson.M, update bson.M) (err error) {
func (svc *ModelService[T]) UpdateOne(query bson.M, update bson.M) (err error) {
ctx, cancel := svc.c.Context()
defer cancel()
queryData, err := json.Marshal(query)
@@ -165,7 +165,7 @@ func (svc *ModelServiceV2[T]) UpdateOne(query bson.M, update bson.M) (err error)
if err != nil {
return err
}
_, err = svc.c.ModelBaseServiceV2Client.UpdateOne(ctx, &grpc.ModelServiceV2UpdateOneRequest{
_, err = svc.c.ModelBaseServiceClient.UpdateOne(ctx, &grpc.ModelServiceUpdateOneRequest{
NodeKey: svc.cfg.GetNodeKey(),
ModelType: svc.modelType,
Query: queryData,
@@ -177,7 +177,7 @@ func (svc *ModelServiceV2[T]) UpdateOne(query bson.M, update bson.M) (err error)
return nil
}
func (svc *ModelServiceV2[T]) UpdateMany(query bson.M, update bson.M) (err error) {
func (svc *ModelService[T]) UpdateMany(query bson.M, update bson.M) (err error) {
ctx, cancel := svc.c.Context()
defer cancel()
queryData, err := json.Marshal(query)
@@ -188,7 +188,7 @@ func (svc *ModelServiceV2[T]) UpdateMany(query bson.M, update bson.M) (err error
if err != nil {
return err
}
_, err = svc.c.ModelBaseServiceV2Client.UpdateMany(ctx, &grpc.ModelServiceV2UpdateManyRequest{
_, err = svc.c.ModelBaseServiceClient.UpdateMany(ctx, &grpc.ModelServiceUpdateManyRequest{
NodeKey: svc.cfg.GetNodeKey(),
ModelType: svc.modelType,
Query: queryData,
@@ -197,14 +197,14 @@ func (svc *ModelServiceV2[T]) UpdateMany(query bson.M, update bson.M) (err error
return nil
}
func (svc *ModelServiceV2[T]) ReplaceById(id primitive.ObjectID, model T) (err error) {
func (svc *ModelService[T]) ReplaceById(id primitive.ObjectID, model T) (err error) {
ctx, cancel := svc.c.Context()
defer cancel()
modelData, err := json.Marshal(model)
if err != nil {
return err
}
_, err = svc.c.ModelBaseServiceV2Client.ReplaceById(ctx, &grpc.ModelServiceV2ReplaceByIdRequest{
_, err = svc.c.ModelBaseServiceClient.ReplaceById(ctx, &grpc.ModelServiceReplaceByIdRequest{
NodeKey: svc.cfg.GetNodeKey(),
ModelType: svc.modelType,
Id: id.Hex(),
@@ -216,7 +216,7 @@ func (svc *ModelServiceV2[T]) ReplaceById(id primitive.ObjectID, model T) (err e
return nil
}
func (svc *ModelServiceV2[T]) ReplaceOne(query bson.M, model T) (err error) {
func (svc *ModelService[T]) ReplaceOne(query bson.M, model T) (err error) {
ctx, cancel := svc.c.Context()
defer cancel()
queryData, err := json.Marshal(query)
@@ -227,7 +227,7 @@ func (svc *ModelServiceV2[T]) ReplaceOne(query bson.M, model T) (err error) {
if err != nil {
return err
}
_, err = svc.c.ModelBaseServiceV2Client.ReplaceOne(ctx, &grpc.ModelServiceV2ReplaceOneRequest{
_, err = svc.c.ModelBaseServiceClient.ReplaceOne(ctx, &grpc.ModelServiceReplaceOneRequest{
NodeKey: svc.cfg.GetNodeKey(),
ModelType: svc.modelType,
Query: queryData,
@@ -239,14 +239,14 @@ func (svc *ModelServiceV2[T]) ReplaceOne(query bson.M, model T) (err error) {
return nil
}
func (svc *ModelServiceV2[T]) InsertOne(model T) (id primitive.ObjectID, err error) {
func (svc *ModelService[T]) InsertOne(model T) (id primitive.ObjectID, err error) {
ctx, cancel := svc.c.Context()
defer cancel()
modelData, err := json.Marshal(model)
if err != nil {
return primitive.NilObjectID, err
}
res, err := svc.c.ModelBaseServiceV2Client.InsertOne(ctx, &grpc.ModelServiceV2InsertOneRequest{
res, err := svc.c.ModelBaseServiceClient.InsertOne(ctx, &grpc.ModelServiceInsertOneRequest{
NodeKey: svc.cfg.GetNodeKey(),
ModelType: svc.modelType,
Model: modelData,
@@ -262,14 +262,14 @@ func (svc *ModelServiceV2[T]) InsertOne(model T) (id primitive.ObjectID, err err
//return primitive.ObjectIDFromHex(idStr)
}
func (svc *ModelServiceV2[T]) InsertMany(models []T) (ids []primitive.ObjectID, err error) {
func (svc *ModelService[T]) InsertMany(models []T) (ids []primitive.ObjectID, err error) {
ctx, cancel := svc.c.Context()
defer cancel()
modelsData, err := json.Marshal(models)
if err != nil {
return nil, err
}
res, err := svc.c.ModelBaseServiceV2Client.InsertMany(ctx, &grpc.ModelServiceV2InsertManyRequest{
res, err := svc.c.ModelBaseServiceClient.InsertMany(ctx, &grpc.ModelServiceInsertManyRequest{
NodeKey: svc.cfg.GetNodeKey(),
ModelType: svc.modelType,
Models: modelsData,
@@ -280,14 +280,14 @@ func (svc *ModelServiceV2[T]) InsertMany(models []T) (ids []primitive.ObjectID,
return deserialize[[]primitive.ObjectID](res)
}
func (svc *ModelServiceV2[T]) Count(query bson.M) (total int, err error) {
func (svc *ModelService[T]) Count(query bson.M) (total int, err error) {
ctx, cancel := svc.c.Context()
defer cancel()
queryData, err := json.Marshal(query)
if err != nil {
return 0, err
}
res, err := svc.c.ModelBaseServiceV2Client.Count(ctx, &grpc.ModelServiceV2CountRequest{
res, err := svc.c.ModelBaseServiceClient.Count(ctx, &grpc.ModelServiceCountRequest{
NodeKey: svc.cfg.GetNodeKey(),
ModelType: svc.modelType,
Query: queryData,
@@ -298,11 +298,11 @@ func (svc *ModelServiceV2[T]) Count(query bson.M) (total int, err error) {
return deserialize[int](res)
}
func (svc *ModelServiceV2[T]) GetCol() (col *mongo.Col) {
func (svc *ModelService[T]) GetCol() (col *mongo.Col) {
return nil
}
func (svc *ModelServiceV2[T]) deserializeOne(res *grpc.Response) (result *T, err error) {
func (svc *ModelService[T]) deserializeOne(res *grpc.Response) (result *T, err error) {
r, err := deserialize[T](res)
if err != nil {
return nil, err
@@ -310,7 +310,7 @@ func (svc *ModelServiceV2[T]) deserializeOne(res *grpc.Response) (result *T, err
return &r, err
}
func (svc *ModelServiceV2[T]) deserializeMany(res *grpc.Response) (results []T, err error) {
func (svc *ModelService[T]) deserializeMany(res *grpc.Response) (results []T, err error) {
return deserialize[[]T](res)
}
@@ -322,7 +322,7 @@ func deserialize[T any](res *grpc.Response) (result T, err error) {
return result, nil
}
func NewModelServiceV2[T any]() *ModelServiceV2[T] {
func NewModelService[T any]() *ModelService[T] {
mu.Lock()
defer mu.Unlock()
@@ -334,7 +334,7 @@ func NewModelServiceV2[T any]() *ModelServiceV2[T] {
onceMap[typeName] = new(sync.Once)
}
var instance *ModelServiceV2[T]
var instance *ModelService[T]
c := client.GetGrpcClient()
if !c.IsStarted() {
@@ -345,7 +345,7 @@ func NewModelServiceV2[T any]() *ModelServiceV2[T] {
}
onceMap[typeName].Do(func() {
instance = &ModelServiceV2[T]{
instance = &ModelService[T]{
cfg: nodeconfig.GetNodeConfigService(),
c: c,
modelType: typeName,
@@ -353,5 +353,5 @@ func NewModelServiceV2[T any]() *ModelServiceV2[T] {
instanceMap[typeName] = instance
})
return instanceMap[typeName].(*ModelServiceV2[T])
return instanceMap[typeName].(*ModelService[T])
}

View File

@@ -43,7 +43,7 @@ func stopSvr(svr *server.GrpcServer) {
}
}
func TestModelServiceV2_GetById(t *testing.T) {
func TestModelService_GetById(t *testing.T) {
setupTestDB()
defer teardownTestDB()
svr, err := server.NewGrpcServer()
@@ -54,7 +54,7 @@ func TestModelServiceV2_GetById(t *testing.T) {
m := models.TestModelV2{
Name: "Test Name",
}
modelSvc := service.NewModelServiceV2[models.TestModelV2]()
modelSvc := service.NewModelService[models.TestModelV2]()
id, err := modelSvc.InsertOne(m)
require.Nil(t, err)
m.SetId(id)
@@ -64,14 +64,14 @@ func TestModelServiceV2_GetById(t *testing.T) {
require.Nil(t, err)
c.Connect()
clientSvc := client.NewModelServiceV2[models.TestModelV2]()
clientSvc := client.NewModelService[models.TestModelV2]()
res, err := clientSvc.GetById(m.Id)
require.Nil(t, err)
assert.Equal(t, res.Id, m.Id)
assert.Equal(t, res.Name, m.Name)
}
func TestModelServiceV2_GetOne(t *testing.T) {
func TestModelService_GetOne(t *testing.T) {
setupTestDB()
defer teardownTestDB()
svr, err := server.NewGrpcServer()
@@ -82,7 +82,7 @@ func TestModelServiceV2_GetOne(t *testing.T) {
m := models.TestModelV2{
Name: "Test Name",
}
modelSvc := service.NewModelServiceV2[models.TestModelV2]()
modelSvc := service.NewModelService[models.TestModelV2]()
id, err := modelSvc.InsertOne(m)
require.Nil(t, err)
m.SetId(id)
@@ -92,14 +92,14 @@ func TestModelServiceV2_GetOne(t *testing.T) {
require.Nil(t, err)
c.Connect()
clientSvc := client.NewModelServiceV2[models.TestModelV2]()
clientSvc := client.NewModelService[models.TestModelV2]()
res, err := clientSvc.GetOne(bson.M{"name": m.Name}, nil)
require.Nil(t, err)
assert.Equal(t, res.Id, m.Id)
assert.Equal(t, res.Name, m.Name)
}
func TestModelServiceV2_GetMany(t *testing.T) {
func TestModelService_GetMany(t *testing.T) {
setupTestDB()
defer teardownTestDB()
svr, err := server.NewGrpcServer()
@@ -110,7 +110,7 @@ func TestModelServiceV2_GetMany(t *testing.T) {
m := models.TestModelV2{
Name: "Test Name",
}
modelSvc := service.NewModelServiceV2[models.TestModelV2]()
modelSvc := service.NewModelService[models.TestModelV2]()
id, err := modelSvc.InsertOne(m)
require.Nil(t, err)
m.SetId(id)
@@ -120,7 +120,7 @@ func TestModelServiceV2_GetMany(t *testing.T) {
require.Nil(t, err)
c.Connect()
clientSvc := client.NewModelServiceV2[models.TestModelV2]()
clientSvc := client.NewModelService[models.TestModelV2]()
res, err := clientSvc.GetMany(bson.M{"name": m.Name}, nil)
require.Nil(t, err)
assert.Equal(t, len(res), 1)
@@ -128,7 +128,7 @@ func TestModelServiceV2_GetMany(t *testing.T) {
assert.Equal(t, res[0].Name, m.Name)
}
func TestModelServiceV2_DeleteById(t *testing.T) {
func TestModelService_DeleteById(t *testing.T) {
setupTestDB()
defer teardownTestDB()
svr, err := server.NewGrpcServer()
@@ -139,7 +139,7 @@ func TestModelServiceV2_DeleteById(t *testing.T) {
m := models.TestModelV2{
Name: "Test Name",
}
modelSvc := service.NewModelServiceV2[models.TestModelV2]()
modelSvc := service.NewModelService[models.TestModelV2]()
id, err := modelSvc.InsertOne(m)
require.Nil(t, err)
m.SetId(id)
@@ -149,7 +149,7 @@ func TestModelServiceV2_DeleteById(t *testing.T) {
require.Nil(t, err)
c.Connect()
clientSvc := client.NewModelServiceV2[models.TestModelV2]()
clientSvc := client.NewModelService[models.TestModelV2]()
err = clientSvc.DeleteById(m.Id)
require.Nil(t, err)
@@ -158,7 +158,7 @@ func TestModelServiceV2_DeleteById(t *testing.T) {
require.Nil(t, res)
}
func TestModelServiceV2_DeleteOne(t *testing.T) {
func TestModelService_DeleteOne(t *testing.T) {
setupTestDB()
defer teardownTestDB()
svr, err := server.NewGrpcServer()
@@ -169,7 +169,7 @@ func TestModelServiceV2_DeleteOne(t *testing.T) {
m := models.TestModelV2{
Name: "Test Name",
}
modelSvc := service.NewModelServiceV2[models.TestModelV2]()
modelSvc := service.NewModelService[models.TestModelV2]()
id, err := modelSvc.InsertOne(m)
require.Nil(t, err)
m.SetId(id)
@@ -179,7 +179,7 @@ func TestModelServiceV2_DeleteOne(t *testing.T) {
require.Nil(t, err)
c.Connect()
clientSvc := client.NewModelServiceV2[models.TestModelV2]()
clientSvc := client.NewModelService[models.TestModelV2]()
err = clientSvc.DeleteOne(bson.M{"name": m.Name})
require.Nil(t, err)
@@ -188,7 +188,7 @@ func TestModelServiceV2_DeleteOne(t *testing.T) {
require.Nil(t, res)
}
func TestModelServiceV2_DeleteMany(t *testing.T) {
func TestModelService_DeleteMany(t *testing.T) {
setupTestDB()
defer teardownTestDB()
svr, err := server.NewGrpcServer()
@@ -199,7 +199,7 @@ func TestModelServiceV2_DeleteMany(t *testing.T) {
m := models.TestModelV2{
Name: "Test Name",
}
modelSvc := service.NewModelServiceV2[models.TestModelV2]()
modelSvc := service.NewModelService[models.TestModelV2]()
id, err := modelSvc.InsertOne(m)
require.Nil(t, err)
m.SetId(id)
@@ -209,7 +209,7 @@ func TestModelServiceV2_DeleteMany(t *testing.T) {
require.Nil(t, err)
c.Connect()
clientSvc := client.NewModelServiceV2[models.TestModelV2]()
clientSvc := client.NewModelService[models.TestModelV2]()
err = clientSvc.DeleteMany(bson.M{"name": m.Name})
require.Nil(t, err)
@@ -218,7 +218,7 @@ func TestModelServiceV2_DeleteMany(t *testing.T) {
assert.Equal(t, len(res), 0)
}
func TestModelServiceV2_UpdateById(t *testing.T) {
func TestModelService_UpdateById(t *testing.T) {
setupTestDB()
defer teardownTestDB()
svr, err := server.NewGrpcServer()
@@ -229,7 +229,7 @@ func TestModelServiceV2_UpdateById(t *testing.T) {
m := models.TestModelV2{
Name: "Test Name",
}
modelSvc := service.NewModelServiceV2[models.TestModelV2]()
modelSvc := service.NewModelService[models.TestModelV2]()
id, err := modelSvc.InsertOne(m)
require.Nil(t, err)
m.SetId(id)
@@ -239,7 +239,7 @@ func TestModelServiceV2_UpdateById(t *testing.T) {
require.Nil(t, err)
c.Connect()
clientSvc := client.NewModelServiceV2[models.TestModelV2]()
clientSvc := client.NewModelService[models.TestModelV2]()
err = clientSvc.UpdateById(m.Id, bson.M{"$set": bson.M{"name": "New Name"}})
require.Nil(t, err)
@@ -248,7 +248,7 @@ func TestModelServiceV2_UpdateById(t *testing.T) {
assert.Equal(t, res.Name, "New Name")
}
func TestModelServiceV2_UpdateOne(t *testing.T) {
func TestModelService_UpdateOne(t *testing.T) {
setupTestDB()
defer teardownTestDB()
svr, err := server.NewGrpcServer()
@@ -259,7 +259,7 @@ func TestModelServiceV2_UpdateOne(t *testing.T) {
m := models.TestModelV2{
Name: "Test Name",
}
modelSvc := service.NewModelServiceV2[models.TestModelV2]()
modelSvc := service.NewModelService[models.TestModelV2]()
id, err := modelSvc.InsertOne(m)
require.Nil(t, err)
m.SetId(id)
@@ -269,7 +269,7 @@ func TestModelServiceV2_UpdateOne(t *testing.T) {
require.Nil(t, err)
c.Connect()
clientSvc := client.NewModelServiceV2[models.TestModelV2]()
clientSvc := client.NewModelService[models.TestModelV2]()
err = clientSvc.UpdateOne(bson.M{"name": m.Name}, bson.M{"$set": bson.M{"name": "New Name"}})
require.Nil(t, err)
@@ -278,7 +278,7 @@ func TestModelServiceV2_UpdateOne(t *testing.T) {
assert.Equal(t, res.Name, "New Name")
}
func TestModelServiceV2_UpdateMany(t *testing.T) {
func TestModelService_UpdateMany(t *testing.T) {
setupTestDB()
defer teardownTestDB()
svr, err := server.NewGrpcServer()
@@ -292,7 +292,7 @@ func TestModelServiceV2_UpdateMany(t *testing.T) {
m2 := models.TestModelV2{
Name: "Test Name",
}
modelSvc := service.NewModelServiceV2[models.TestModelV2]()
modelSvc := service.NewModelService[models.TestModelV2]()
_, err = modelSvc.InsertOne(m1)
require.Nil(t, err)
_, err = modelSvc.InsertOne(m2)
@@ -303,7 +303,7 @@ func TestModelServiceV2_UpdateMany(t *testing.T) {
require.Nil(t, err)
c.Connect()
clientSvc := client.NewModelServiceV2[models.TestModelV2]()
clientSvc := client.NewModelService[models.TestModelV2]()
err = clientSvc.UpdateMany(bson.M{"name": "Test Name"}, bson.M{"$set": bson.M{"name": "New Name"}})
require.Nil(t, err)
@@ -312,7 +312,7 @@ func TestModelServiceV2_UpdateMany(t *testing.T) {
assert.Equal(t, len(res), 2)
}
func TestModelServiceV2_ReplaceById(t *testing.T) {
func TestModelService_ReplaceById(t *testing.T) {
setupTestDB()
defer teardownTestDB()
svr, err := server.NewGrpcServer()
@@ -323,7 +323,7 @@ func TestModelServiceV2_ReplaceById(t *testing.T) {
m := models.TestModelV2{
Name: "Test Name",
}
modelSvc := service.NewModelServiceV2[models.TestModelV2]()
modelSvc := service.NewModelService[models.TestModelV2]()
id, err := modelSvc.InsertOne(m)
require.Nil(t, err)
m.SetId(id)
@@ -333,7 +333,7 @@ func TestModelServiceV2_ReplaceById(t *testing.T) {
require.Nil(t, err)
c.Connect()
clientSvc := client.NewModelServiceV2[models.TestModelV2]()
clientSvc := client.NewModelService[models.TestModelV2]()
m.Name = "New Name"
err = clientSvc.ReplaceById(m.Id, m)
require.Nil(t, err)
@@ -343,7 +343,7 @@ func TestModelServiceV2_ReplaceById(t *testing.T) {
assert.Equal(t, res.Name, "New Name")
}
func TestModelServiceV2_ReplaceOne(t *testing.T) {
func TestModelService_ReplaceOne(t *testing.T) {
setupTestDB()
defer teardownTestDB()
svr, err := server.NewGrpcServer()
@@ -354,7 +354,7 @@ func TestModelServiceV2_ReplaceOne(t *testing.T) {
m := models.TestModelV2{
Name: "Test Name",
}
modelSvc := service.NewModelServiceV2[models.TestModelV2]()
modelSvc := service.NewModelService[models.TestModelV2]()
id, err := modelSvc.InsertOne(m)
require.Nil(t, err)
m.SetId(id)
@@ -364,7 +364,7 @@ func TestModelServiceV2_ReplaceOne(t *testing.T) {
require.Nil(t, err)
c.Connect()
clientSvc := client.NewModelServiceV2[models.TestModelV2]()
clientSvc := client.NewModelService[models.TestModelV2]()
m.Name = "New Name"
err = clientSvc.ReplaceOne(bson.M{"name": "Test Name"}, m)
require.Nil(t, err)
@@ -374,7 +374,7 @@ func TestModelServiceV2_ReplaceOne(t *testing.T) {
assert.Equal(t, res.Name, "New Name")
}
func TestModelServiceV2_InsertOne(t *testing.T) {
func TestModelService_InsertOne(t *testing.T) {
setupTestDB()
defer teardownTestDB()
svr, err := server.NewGrpcServer()
@@ -386,7 +386,7 @@ func TestModelServiceV2_InsertOne(t *testing.T) {
require.Nil(t, err)
c.Connect()
clientSvc := client.NewModelServiceV2[models.TestModelV2]()
clientSvc := client.NewModelService[models.TestModelV2]()
m := models.TestModelV2{
Name: "Test Name",
}
@@ -398,7 +398,7 @@ func TestModelServiceV2_InsertOne(t *testing.T) {
assert.Equal(t, res.Name, m.Name)
}
func TestModelServiceV2_InsertMany(t *testing.T) {
func TestModelService_InsertMany(t *testing.T) {
setupTestDB()
defer teardownTestDB()
svr, err := server.NewGrpcServer()
@@ -410,7 +410,7 @@ func TestModelServiceV2_InsertMany(t *testing.T) {
require.Nil(t, err)
c.Connect()
clientSvc := client.NewModelServiceV2[models.TestModelV2]()
clientSvc := client.NewModelService[models.TestModelV2]()
testModels := []models.TestModelV2{
{Name: "Test Name 1"},
{Name: "Test Name 2"},
@@ -425,7 +425,7 @@ func TestModelServiceV2_InsertMany(t *testing.T) {
}
}
func TestModelServiceV2_Count(t *testing.T) {
func TestModelService_Count(t *testing.T) {
setupTestDB()
defer teardownTestDB()
svr, err := server.NewGrpcServer()
@@ -433,7 +433,7 @@ func TestModelServiceV2_Count(t *testing.T) {
go startSvr(svr)
defer stopSvr(svr)
modelSvc := service.NewModelServiceV2[models.TestModelV2]()
modelSvc := service.NewModelService[models.TestModelV2]()
for i := 0; i < 5; i++ {
_, err = modelSvc.InsertOne(models.TestModelV2{
Name: "Test Name",
@@ -446,7 +446,7 @@ func TestModelServiceV2_Count(t *testing.T) {
require.Nil(t, err)
c.Connect()
clientSvc := client.NewModelServiceV2[models.TestModelV2]()
clientSvc := client.NewModelService[models.TestModelV2]()
count, err := clientSvc.Count(bson.M{})
require.Nil(t, err)

View File

@@ -20,11 +20,11 @@ var (
mu sync.Mutex
)
type ModelServiceV2[T any] struct {
type ModelService[T any] struct {
col *mongo.Col
}
func (svc *ModelServiceV2[T]) GetById(id primitive.ObjectID) (model *T, err error) {
func (svc *ModelService[T]) GetById(id primitive.ObjectID) (model *T, err error) {
var result T
err = svc.col.FindId(id).One(&result)
if err != nil {
@@ -33,7 +33,7 @@ func (svc *ModelServiceV2[T]) GetById(id primitive.ObjectID) (model *T, err erro
return &result, nil
}
func (svc *ModelServiceV2[T]) GetByIdContext(ctx context.Context, id primitive.ObjectID) (model *T, err error) {
func (svc *ModelService[T]) GetByIdContext(ctx context.Context, id primitive.ObjectID) (model *T, err error) {
var result T
err = svc.col.GetCollection().FindOne(ctx, bson.M{"_id": id}).Decode(&result)
if err != nil {
@@ -42,7 +42,7 @@ func (svc *ModelServiceV2[T]) GetByIdContext(ctx context.Context, id primitive.O
return &result, nil
}
func (svc *ModelServiceV2[T]) GetOne(query bson.M, options *mongo.FindOptions) (model *T, err error) {
func (svc *ModelService[T]) GetOne(query bson.M, options *mongo.FindOptions) (model *T, err error) {
var result T
err = svc.col.Find(query, options).One(&result)
if err != nil {
@@ -51,7 +51,7 @@ func (svc *ModelServiceV2[T]) GetOne(query bson.M, options *mongo.FindOptions) (
return &result, nil
}
func (svc *ModelServiceV2[T]) GetOneContext(ctx context.Context, query bson.M, opts *mongo.FindOptions) (model *T, err error) {
func (svc *ModelService[T]) GetOneContext(ctx context.Context, query bson.M, opts *mongo.FindOptions) (model *T, err error) {
var result T
_opts := &options.FindOneOptions{}
if opts != nil {
@@ -70,7 +70,7 @@ func (svc *ModelServiceV2[T]) GetOneContext(ctx context.Context, query bson.M, o
return &result, nil
}
func (svc *ModelServiceV2[T]) GetMany(query bson.M, options *mongo.FindOptions) (models []T, err error) {
func (svc *ModelService[T]) GetMany(query bson.M, options *mongo.FindOptions) (models []T, err error) {
var result []T
err = svc.col.Find(query, options).All(&result)
if err != nil {
@@ -79,7 +79,7 @@ func (svc *ModelServiceV2[T]) GetMany(query bson.M, options *mongo.FindOptions)
return result, nil
}
func (svc *ModelServiceV2[T]) GetManyContext(ctx context.Context, query bson.M, opts *mongo.FindOptions) (models []T, err error) {
func (svc *ModelService[T]) GetManyContext(ctx context.Context, query bson.M, opts *mongo.FindOptions) (models []T, err error) {
var result []T
_opts := &options.FindOptions{}
if opts != nil {
@@ -110,85 +110,85 @@ func (svc *ModelServiceV2[T]) GetManyContext(ctx context.Context, query bson.M,
return result, nil
}
func (svc *ModelServiceV2[T]) DeleteById(id primitive.ObjectID) (err error) {
func (svc *ModelService[T]) DeleteById(id primitive.ObjectID) (err error) {
return svc.col.DeleteId(id)
}
func (svc *ModelServiceV2[T]) DeleteByIdContext(ctx context.Context, id primitive.ObjectID) (err error) {
func (svc *ModelService[T]) DeleteByIdContext(ctx context.Context, id primitive.ObjectID) (err error) {
_, err = svc.col.GetCollection().DeleteOne(ctx, bson.M{"_id": id})
return err
}
func (svc *ModelServiceV2[T]) DeleteOne(query bson.M) (err error) {
func (svc *ModelService[T]) DeleteOne(query bson.M) (err error) {
_, err = svc.col.GetCollection().DeleteOne(svc.col.GetContext(), query)
return err
}
func (svc *ModelServiceV2[T]) DeleteOneContext(ctx context.Context, query bson.M) (err error) {
func (svc *ModelService[T]) DeleteOneContext(ctx context.Context, query bson.M) (err error) {
_, err = svc.col.GetCollection().DeleteOne(ctx, query)
return err
}
func (svc *ModelServiceV2[T]) DeleteMany(query bson.M) (err error) {
func (svc *ModelService[T]) DeleteMany(query bson.M) (err error) {
_, err = svc.col.GetCollection().DeleteMany(svc.col.GetContext(), query, nil)
return err
}
func (svc *ModelServiceV2[T]) DeleteManyContext(ctx context.Context, query bson.M) (err error) {
func (svc *ModelService[T]) DeleteManyContext(ctx context.Context, query bson.M) (err error) {
_, err = svc.col.GetCollection().DeleteMany(ctx, query, nil)
return err
}
func (svc *ModelServiceV2[T]) UpdateById(id primitive.ObjectID, update bson.M) (err error) {
func (svc *ModelService[T]) UpdateById(id primitive.ObjectID, update bson.M) (err error) {
return svc.col.UpdateId(id, update)
}
func (svc *ModelServiceV2[T]) UpdateByIdContext(ctx context.Context, id primitive.ObjectID, update bson.M) (err error) {
func (svc *ModelService[T]) UpdateByIdContext(ctx context.Context, id primitive.ObjectID, update bson.M) (err error) {
_, err = svc.col.GetCollection().UpdateOne(ctx, bson.M{"_id": id}, update)
return err
}
func (svc *ModelServiceV2[T]) UpdateOne(query bson.M, update bson.M) (err error) {
func (svc *ModelService[T]) UpdateOne(query bson.M, update bson.M) (err error) {
_, err = svc.col.GetCollection().UpdateOne(svc.col.GetContext(), query, update)
return err
}
func (svc *ModelServiceV2[T]) UpdateOneContext(ctx context.Context, query bson.M, update bson.M) (err error) {
func (svc *ModelService[T]) UpdateOneContext(ctx context.Context, query bson.M, update bson.M) (err error) {
_, err = svc.col.GetCollection().UpdateOne(ctx, query, update)
return err
}
func (svc *ModelServiceV2[T]) UpdateMany(query bson.M, update bson.M) (err error) {
func (svc *ModelService[T]) UpdateMany(query bson.M, update bson.M) (err error) {
_, err = svc.col.GetCollection().UpdateMany(svc.col.GetContext(), query, update)
return err
}
func (svc *ModelServiceV2[T]) UpdateManyContext(ctx context.Context, query bson.M, update bson.M) (err error) {
func (svc *ModelService[T]) UpdateManyContext(ctx context.Context, query bson.M, update bson.M) (err error) {
_, err = svc.col.GetCollection().UpdateMany(ctx, query, update)
return err
}
func (svc *ModelServiceV2[T]) ReplaceById(id primitive.ObjectID, model T) (err error) {
func (svc *ModelService[T]) ReplaceById(id primitive.ObjectID, model T) (err error) {
_, err = svc.col.GetCollection().ReplaceOne(svc.col.GetContext(), bson.M{"_id": id}, model)
return err
}
func (svc *ModelServiceV2[T]) ReplaceByIdContext(ctx context.Context, id primitive.ObjectID, model T) (err error) {
func (svc *ModelService[T]) ReplaceByIdContext(ctx context.Context, id primitive.ObjectID, model T) (err error) {
_, err = svc.col.GetCollection().ReplaceOne(ctx, bson.M{"_id": id}, model)
return err
}
func (svc *ModelServiceV2[T]) ReplaceOne(query bson.M, model T) (err error) {
func (svc *ModelService[T]) ReplaceOne(query bson.M, model T) (err error) {
_, err = svc.col.GetCollection().ReplaceOne(svc.col.GetContext(), query, model)
return err
}
func (svc *ModelServiceV2[T]) ReplaceOneContext(ctx context.Context, query bson.M, model T) (err error) {
func (svc *ModelService[T]) ReplaceOneContext(ctx context.Context, query bson.M, model T) (err error) {
_, err = svc.col.GetCollection().ReplaceOne(ctx, query, model)
return err
}
func (svc *ModelServiceV2[T]) InsertOne(model T) (id primitive.ObjectID, err error) {
func (svc *ModelService[T]) InsertOne(model T) (id primitive.ObjectID, err error) {
m := any(&model).(interfaces.Model)
if m.GetId().IsZero() {
m.SetId(primitive.NewObjectID())
@@ -200,7 +200,7 @@ func (svc *ModelServiceV2[T]) InsertOne(model T) (id primitive.ObjectID, err err
return res.InsertedID.(primitive.ObjectID), nil
}
func (svc *ModelServiceV2[T]) InsertOneContext(ctx context.Context, model T) (id primitive.ObjectID, err error) {
func (svc *ModelService[T]) InsertOneContext(ctx context.Context, model T) (id primitive.ObjectID, err error) {
m := any(&model).(interfaces.Model)
if m.GetId().IsZero() {
m.SetId(primitive.NewObjectID())
@@ -212,7 +212,7 @@ func (svc *ModelServiceV2[T]) InsertOneContext(ctx context.Context, model T) (id
return res.InsertedID.(primitive.ObjectID), nil
}
func (svc *ModelServiceV2[T]) InsertMany(models []T) (ids []primitive.ObjectID, err error) {
func (svc *ModelService[T]) InsertMany(models []T) (ids []primitive.ObjectID, err error) {
var _models []any
for _, model := range models {
m := any(&model).(interfaces.Model)
@@ -231,7 +231,7 @@ func (svc *ModelServiceV2[T]) InsertMany(models []T) (ids []primitive.ObjectID,
return ids, nil
}
func (svc *ModelServiceV2[T]) InsertManyContext(ctx context.Context, models []T) (ids []primitive.ObjectID, err error) {
func (svc *ModelService[T]) InsertManyContext(ctx context.Context, models []T) (ids []primitive.ObjectID, err error) {
var _models []any
for _, model := range models {
m := any(&model).(interfaces.Model)
@@ -250,11 +250,11 @@ func (svc *ModelServiceV2[T]) InsertManyContext(ctx context.Context, models []T)
return ids, nil
}
func (svc *ModelServiceV2[T]) Count(query bson.M) (total int, err error) {
func (svc *ModelService[T]) Count(query bson.M) (total int, err error) {
return svc.col.Count(query)
}
func (svc *ModelServiceV2[T]) GetCol() (col *mongo.Col) {
func (svc *ModelService[T]) GetCol() (col *mongo.Col) {
return svc.col
}
@@ -271,8 +271,8 @@ func getCollectionName[T any]() string {
return field.Tag.Get("collection")
}
// NewModelServiceV2 return singleton instance of ModelServiceV2
func NewModelServiceV2[T any]() *ModelServiceV2[T] {
// NewModelService return singleton instance of ModelService
func NewModelService[T any]() *ModelService[T] {
typeName := fmt.Sprintf("%T", *new(T))
mu.Lock()
@@ -282,19 +282,19 @@ func NewModelServiceV2[T any]() *ModelServiceV2[T] {
onceMap[typeName] = new(sync.Once)
}
var instance *ModelServiceV2[T]
var instance *ModelService[T]
onceMap[typeName].Do(func() {
collectionName := getCollectionName[T]()
collection := mongo.GetMongoCol(collectionName)
instance = &ModelServiceV2[T]{col: collection}
instance = &ModelService[T]{col: collection}
instanceMap[typeName] = instance
})
return instanceMap[typeName].(*ModelServiceV2[T])
return instanceMap[typeName].(*ModelService[T])
}
func NewModelServiceV2WithColName[T any](colName string) *ModelServiceV2[T] {
func NewModelServiceWithColName[T any](colName string) *ModelService[T] {
mu.Lock()
defer mu.Unlock()
@@ -302,13 +302,13 @@ func NewModelServiceV2WithColName[T any](colName string) *ModelServiceV2[T] {
onceColNameMap[colName] = new(sync.Once)
}
var instance *ModelServiceV2[T]
var instance *ModelService[T]
onceColNameMap[colName].Do(func() {
collection := mongo.GetMongoCol(colName)
instance = &ModelServiceV2[T]{col: collection}
instance = &ModelService[T]{col: collection}
instanceMap[colName] = instance
})
return instanceMap[colName].(*ModelServiceV2[T])
return instanceMap[colName].(*ModelService[T])
}

View File

@@ -41,7 +41,7 @@ func TestModelServiceV2(t *testing.T) {
defer teardownTestDB()
t.Run("GetById", func(t *testing.T) {
svc := service.NewModelServiceV2[TestModel]()
svc := service.NewModelService[TestModel]()
testModel := TestModel{Name: "GetById Test"}
id, err := svc.InsertOne(testModel)
@@ -54,7 +54,7 @@ func TestModelServiceV2(t *testing.T) {
})
t.Run("GetOne", func(t *testing.T) {
svc := service.NewModelServiceV2[TestModel]()
svc := service.NewModelService[TestModel]()
testModel := TestModel{Name: "GetOne Test"}
_, err := svc.InsertOne(testModel)
@@ -67,7 +67,7 @@ func TestModelServiceV2(t *testing.T) {
})
t.Run("GetMany", func(t *testing.T) {
svc := service.NewModelServiceV2[TestModel]()
svc := service.NewModelService[TestModel]()
testModels := []TestModel{
{Name: "GetMany Test 1"},
{Name: "GetMany Test 2"},
@@ -83,7 +83,7 @@ func TestModelServiceV2(t *testing.T) {
})
t.Run("InsertOne", func(t *testing.T) {
svc := service.NewModelServiceV2[TestModel]()
svc := service.NewModelService[TestModel]()
testModel := TestModel{Name: "InsertOne Test"}
id, err := svc.InsertOne(testModel)
@@ -92,7 +92,7 @@ func TestModelServiceV2(t *testing.T) {
})
t.Run("InsertMany", func(t *testing.T) {
svc := service.NewModelServiceV2[TestModel]()
svc := service.NewModelService[TestModel]()
testModels := []TestModel{
{Name: "InsertMany Test 1"},
{Name: "InsertMany Test 2"},
@@ -104,7 +104,7 @@ func TestModelServiceV2(t *testing.T) {
})
t.Run("UpdateById", func(t *testing.T) {
svc := service.NewModelServiceV2[TestModel]()
svc := service.NewModelService[TestModel]()
testModel := TestModel{Name: "UpdateById Test"}
id, err := svc.InsertOne(testModel)
@@ -122,7 +122,7 @@ func TestModelServiceV2(t *testing.T) {
})
t.Run("UpdateOne", func(t *testing.T) {
svc := service.NewModelServiceV2[TestModel]()
svc := service.NewModelService[TestModel]()
testModel := TestModel{Name: "UpdateOne Test"}
_, err := svc.InsertOne(testModel)
@@ -140,7 +140,7 @@ func TestModelServiceV2(t *testing.T) {
})
t.Run("UpdateMany", func(t *testing.T) {
svc := service.NewModelServiceV2[TestModel]()
svc := service.NewModelService[TestModel]()
testModels := []TestModel{
{Name: "UpdateMany Test 1"},
{Name: "UpdateMany Test 2"},
@@ -161,7 +161,7 @@ func TestModelServiceV2(t *testing.T) {
})
t.Run("DeleteById", func(t *testing.T) {
svc := service.NewModelServiceV2[TestModel]()
svc := service.NewModelService[TestModel]()
testModel := TestModel{Name: "DeleteById Test"}
id, err := svc.InsertOne(testModel)
@@ -178,7 +178,7 @@ func TestModelServiceV2(t *testing.T) {
})
t.Run("DeleteOne", func(t *testing.T) {
svc := service.NewModelServiceV2[TestModel]()
svc := service.NewModelService[TestModel]()
testModel := TestModel{Name: "DeleteOne Test"}
_, err := svc.InsertOne(testModel)
@@ -195,7 +195,7 @@ func TestModelServiceV2(t *testing.T) {
})
t.Run("DeleteMany", func(t *testing.T) {
svc := service.NewModelServiceV2[TestModel]()
svc := service.NewModelService[TestModel]()
testModels := []TestModel{
{Name: "DeleteMany Test 1"},
{Name: "DeleteMany Test 2"},
@@ -215,7 +215,7 @@ func TestModelServiceV2(t *testing.T) {
})
t.Run("Count", func(t *testing.T) {
svc := service.NewModelServiceV2[TestModel]()
svc := service.NewModelService[TestModel]()
testModels := []TestModel{
{Name: "Count Test 1"},
{Name: "Count Test 2"},