/
get_example_name.go
75 lines (66 loc) · 1.86 KB
/
get_example_name.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
package example_name_repo
import (
"context"
"fmt"
"github.com/Muruyung/go-utilities/logger"
"github.com/rocketlaunchr/dbq/v2"
"github.com/Muruyung/go-boilgen/pkg/utils"
"github.com/Muruyung/go-boilgen/services/example_cqrs_service/domain/entity"
"github.com/Muruyung/go-boilgen/services/example_cqrs_service/internal/repository/mapper"
"github.com/Muruyung/go-boilgen/services/example_cqrs_service/internal/repository/models"
)
// Get get single data example name
func (db *mysqlExampleNameRepository) Get(ctx context.Context, query utils.QueryBuilderInteractor) (*entity.ExampleName, error) {
const commandName = "REPO-GET-EXAMPLE-NAME"
logger.DetailLoggerInfo(
ctx,
commandName,
"Get example name process...",
nil,
)
var (
err error
tableName = models.ExampleNameModels{}.GetTableName()
exampleName = &entity.ExampleName{}
exampleNameModel *models.ExampleNameModels
)
query.AddPagination(utils.NewPagination(1, 1))
query.AddWhere("deleted_at", "=", nil)
stmt, val, _ := query.GetQuery(tableName, "")
opts := &dbq.Options{
SingleResult: true,
ConcreteStruct: models.ExampleNameModels{},
DecoderConfig: dbq.StdTimeConversionConfig(),
}
result, err := dbq.Q(ctx, db.mysql, stmt, opts, val...)
if err != nil {
logger.DetailLoggerError(
ctx,
commandName,
"Error execute query",
err,
)
return nil, err
}
if result != nil {
exampleNameModel = result.(*models.ExampleNameModels)
exampleNameMapper := mapper.NewExampleNameMapper(nil, exampleNameModel)
exampleNameMapper.MapModelsToDomain(exampleName)
} else {
err = fmt.Errorf("example name data not found")
logger.DetailLoggerError(
ctx,
commandName,
"Data not found",
err,
)
return nil, nil
}
logger.DetailLoggerInfo(
ctx,
commandName,
"Get example name success",
exampleNameModel.GetModelsMap(),
)
return exampleName, nil
}