/
show_schedule_repository_impl.go
116 lines (96 loc) · 3.19 KB
/
show_schedule_repository_impl.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
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
package showschedule
import (
"context"
"errors"
"log"
"github.com/erikrios/reog-apps-apis/entity"
"github.com/erikrios/reog-apps-apis/repository"
"github.com/erikrios/reog-apps-apis/utils/logging"
"github.com/jackc/pgconn"
"gorm.io/gorm"
)
type showScheduleRepositoryImpl struct {
db *gorm.DB
logger logging.Logging
}
func NewShowScheduleRepositoryImpl(db *gorm.DB, logger logging.Logging) *showScheduleRepositoryImpl {
return &showScheduleRepositoryImpl{db: db, logger: logger}
}
func (s *showScheduleRepositoryImpl) Insert(ctx context.Context, showSchedule entity.ShowSchedule) (err error) {
if dbErr := s.db.WithContext(ctx).Create(&showSchedule).Error; dbErr != nil {
var pqErr *pgconn.PgError
if ok := errors.As(dbErr, &pqErr); ok && pqErr.Code == "23505" {
err = repository.ErrRecordAlreadyExists
return
}
go func(logger logging.Logging, message string) {
logger.Error(message)
}(s.logger, dbErr.Error())
log.Println(dbErr)
err = repository.ErrDatabase
}
return
}
func (s *showScheduleRepositoryImpl) FindAll(ctx context.Context) (showSchedules []entity.ShowSchedule, err error) {
if dbErr := s.db.WithContext(ctx).Find(&showSchedules).Error; dbErr != nil {
go func(logger logging.Logging, message string) {
logger.Error(message)
}(s.logger, dbErr.Error())
log.Println(dbErr)
err = repository.ErrDatabase
return
}
return
}
func (s *showScheduleRepositoryImpl) FindByID(ctx context.Context, id string) (showSchedule entity.ShowSchedule, err error) {
if dbErr := s.db.WithContext(ctx).First(&showSchedule, "id = ?", id).Error; dbErr != nil {
if errors.Is(dbErr, gorm.ErrRecordNotFound) {
err = repository.ErrRecordNotFound
return
}
go func(logger logging.Logging, message string) {
logger.Error(message)
}(s.logger, dbErr.Error())
err = repository.ErrDatabase
}
return
}
func (s *showScheduleRepositoryImpl) FindByGroupID(ctx context.Context, groupID string) (showSchedules []entity.ShowSchedule, err error) {
if dbErr := s.db.WithContext(ctx).Where("group_id = ?", groupID).Find(&showSchedules).Error; dbErr != nil {
go func(logger logging.Logging, message string) {
logger.Error(message)
}(s.logger, dbErr.Error())
log.Println(dbErr)
err = repository.ErrDatabase
return
}
return
}
func (s *showScheduleRepositoryImpl) Update(ctx context.Context, id string, showSchedule entity.ShowSchedule) (err error) {
if result := s.db.WithContext(ctx).Where("id = ?", id).UpdateColumns(&showSchedule); result.Error != nil {
go func(logger logging.Logging, message string) {
logger.Error(message)
}(s.logger, result.Error.Error())
log.Println(result.Error)
err = repository.ErrDatabase
} else {
if result.RowsAffected < 1 {
err = repository.ErrRecordNotFound
}
}
return
}
func (s *showScheduleRepositoryImpl) Delete(ctx context.Context, id string) (err error) {
if result := s.db.WithContext(ctx).Delete(&entity.ShowSchedule{}, "id = ?", id); result.Error != nil {
go func(logger logging.Logging, message string) {
logger.Error(message)
}(s.logger, result.Error.Error())
log.Println(result.Error)
err = repository.ErrDatabase
} else {
if result.RowsAffected < 1 {
err = repository.ErrRecordNotFound
}
}
return
}