Skip to content

Commit

Permalink
[Dembo] Add tags to schedule
Browse files Browse the repository at this point in the history
  • Loading branch information
walbertus committed Sep 11, 2019
1 parent 666cd62 commit d0737c0
Show file tree
Hide file tree
Showing 4 changed files with 58 additions and 17 deletions.
14 changes: 7 additions & 7 deletions internal/app/service/schedule/repository/schedule.go
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@ func (repository *scheduleRepository) Disable(id uint64) error {
func (repository *scheduleRepository) Insert(context model.Schedule) (uint64, error) {
snowflakeID, _ := id.NextID()
context.ID = snowflakeID
sql := "INSERT INTO schedule (id, job_name, args,cron,notification_emails, user_email, \"group\", enabled) VALUES (:id, :job_name, :args, :cron, :notification_emails, :user_email, :group, :enabled)"
sql := "INSERT INTO schedule (id, job_name, args, tags, cron, notification_emails, user_email, \"group\", enabled) VALUES (:id, :job_name, :args, :tags, :cron, :notification_emails, :user_email, :group, :enabled)"
_, err := repository.postgresqlClient.NamedExec(sql, &context)
if err != nil {
return 0, err
Expand All @@ -75,7 +75,7 @@ func (repository *scheduleRepository) Delete(id uint64) error {
}

func (repository *scheduleRepository) GetByID(id uint64) (*model.Schedule, error) {
sql := "SELECT id, job_name, args, cron, notification_emails, user_email,\"group\", enabled, created_at, updated_at FROM schedule WHERE id=$1 "
sql := "SELECT id, job_name, args, tags, cron, notification_emails, user_email,\"group\", enabled, created_at, updated_at FROM schedule WHERE id=$1 "
var schedules []model.Schedule
err := repository.postgresqlClient.Select(&schedules, sql, id)
if err != nil {
Expand All @@ -90,7 +90,7 @@ func (repository *scheduleRepository) GetByID(id uint64) (*model.Schedule, error
}

func (repository *scheduleRepository) GetByUserEmail(userEmail string) ([]model.Schedule, error) {
sql := "SELECT id, job_name, args, cron, notification_emails, user_email, \"group\", enabled, created_at, updated_at FROM schedule WHERE user_email=$1 "
sql := "SELECT id, job_name, args, tags, cron, notification_emails, user_email, \"group\", enabled, created_at, updated_at FROM schedule WHERE user_email=$1 "
var schedules []model.Schedule
err := repository.postgresqlClient.Select(&schedules, sql, userEmail)
if err != nil {
Expand All @@ -101,7 +101,7 @@ func (repository *scheduleRepository) GetByUserEmail(userEmail string) ([]model.
}

func (repository *scheduleRepository) GetByJobName(jobName string) ([]model.Schedule, error) {
sql := "SELECT id, job_name, args, cron, notification_emails, user_email, \"group\", enabled, created_at, updated_at FROM schedule WHERE job_name=$1 "
sql := "SELECT id, job_name, args, tags, cron, notification_emails, user_email, \"group\", enabled, created_at, updated_at FROM schedule WHERE job_name=$1 "
var schedules []model.Schedule
err := repository.postgresqlClient.Select(&schedules, sql, jobName)
if err != nil {
Expand All @@ -112,7 +112,7 @@ func (repository *scheduleRepository) GetByJobName(jobName string) ([]model.Sche
}

func (repository *scheduleRepository) GetAllEnabled() ([]model.Schedule, error) {
sql := "SELECT id, job_name, args, cron, notification_emails, user_email, \"group\", enabled, created_at, updated_at FROM schedule WHERE enabled=$1 "
sql := "SELECT id, job_name, args, tags, cron, notification_emails, user_email, \"group\", enabled, created_at, updated_at FROM schedule WHERE enabled=$1 "
var schedules []model.Schedule
err := repository.postgresqlClient.Select(&schedules, sql, true)
if err != nil {
Expand All @@ -123,7 +123,7 @@ func (repository *scheduleRepository) GetAllEnabled() ([]model.Schedule, error)
}

func (repository *scheduleRepository) GetAll() ([]model.Schedule, error) {
sql := "SELECT id, job_name, args, cron, notification_emails, user_email, \"group\", enabled, created_at, updated_at FROM schedule "
sql := "SELECT id, job_name, args, tags, cron, notification_emails, user_email, \"group\", enabled, created_at, updated_at FROM schedule "
var schedules []model.Schedule
err := repository.postgresqlClient.Select(&schedules, sql)
if err != nil {
Expand All @@ -134,7 +134,7 @@ func (repository *scheduleRepository) GetAll() ([]model.Schedule, error) {
}

func (repository *scheduleRepository) GetEnabledByID(id uint64) (*model.Schedule, error) {
sql := "SELECT id, job_name, args, cron, notification_emails, user_email, \"group\", enabled, created_at, updated_at FROM schedule WHERE enabled=$1 AND id=$2 "
sql := "SELECT id, job_name, args, tags, cron, notification_emails, user_email, \"group\", enabled, created_at, updated_at FROM schedule WHERE enabled=$1 AND id=$2 "
var schedules []model.Schedule
err := repository.postgresqlClient.Select(&schedules, sql, true, id)
if err != nil {
Expand Down
59 changes: 49 additions & 10 deletions internal/app/service/schedule/repository/schedule_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -50,14 +50,21 @@ func (suite *ScheduleTestSuite) TestScheduleRepository_Insert() {
assert.NotNil(t, id)
assert.NoError(t, err)

expectedSchedule, err := suite.repository.GetByID(id)
actualSchedule, err := suite.repository.GetByID(id)
assert.NoError(t, err)
assert.NotNil(t, expectedSchedule)

assert.Equal(t, id, expectedSchedule.ID)
assert.NotNil(t, expectedSchedule.CreatedAt)
assert.NotNil(t, expectedSchedule.UpdatedAt)
assert.Equal(t, expectedSchedule.Args[mapKey], mapValue)
assert.NotNil(t, actualSchedule)

assert.Equal(t, id, actualSchedule.ID)
assert.NotNil(t, actualSchedule.CreatedAt)
assert.NotNil(t, actualSchedule.UpdatedAt)
assert.Equal(t, mapValue, actualSchedule.Args[mapKey])
assert.Equal(t, schedule.JobName, actualSchedule.JobName)
assert.Equal(t, schedule.UserEmail, actualSchedule.UserEmail)
assert.Equal(t, schedule.Cron, actualSchedule.Cron)
assert.Equal(t, schedule.Tags, actualSchedule.Tags)
assert.Equal(t, schedule.NotificationEmails, actualSchedule.NotificationEmails)
assert.Equal(t, schedule.Group, actualSchedule.Group)
assert.Equal(t, schedule.Enabled, actualSchedule.Enabled)
}

func (suite *ScheduleTestSuite) TestScheduleRepository_Delete() {
Expand Down Expand Up @@ -100,6 +107,10 @@ func (suite *ScheduleTestSuite) TestScheduleRepository_GetAll() {
assert.NotNil(t, schedules)
size := len(schedules)
assert.Equal(t, recordCount, size)
for _, schedule := range schedules {
assert.NotNil(t, schedule)
assertScheduleCompleteParam(t, schedule)
}
}

func (suite *ScheduleTestSuite) TestScheduleRepository_GetByUserEmail() {
Expand All @@ -120,6 +131,7 @@ func (suite *ScheduleTestSuite) TestScheduleRepository_GetByUserEmail() {

for _, schedule := range schedules {
assert.Equal(t, suppliedEmail, schedule.UserEmail)
assertScheduleCompleteParam(t, schedule)
}
}

Expand All @@ -141,6 +153,7 @@ func (suite *ScheduleTestSuite) TestScheduleRepository_GetByJobName() {

for _, schedule := range schedules {
assert.Equal(t, suppliedJobName, schedule.JobName)
assertScheduleCompleteParam(t, schedule)
}
}

Expand All @@ -161,6 +174,7 @@ func (suite *ScheduleTestSuite) TestScheduleRepository_GetAllEnabled() {

for _, schedule := range schedules {
assert.True(t, schedule.Enabled)
assertScheduleCompleteParam(t, schedule)
}
}

Expand Down Expand Up @@ -189,16 +203,27 @@ func (suite *ScheduleTestSuite) TestScheduleRepository_GetEnabledByID() {
assert.NotNil(t, id)
assert.NoError(t, err)

expectedSchedule, err := suite.repository.GetEnabledByID(id)
actualSchedule, err := suite.repository.GetEnabledByID(id)
assert.NoError(t, err)
assert.NotNil(t, expectedSchedule)
assert.True(t, expectedSchedule.Enabled)
assert.NotNil(t, actualSchedule)
assert.True(t, actualSchedule.Enabled)

willNotExistsID := uint64(17777717)
unexpectedSchedule, err := suite.repository.GetEnabledByID(willNotExistsID)
assert.Error(t, err)
assert.Nil(t, unexpectedSchedule)

assert.Equal(t, id, actualSchedule.ID)
assert.NotNil(t, actualSchedule.CreatedAt)
assert.NotNil(t, actualSchedule.UpdatedAt)
assert.Equal(t, mapValue, actualSchedule.Args[mapKey])
assert.Equal(t, schedule.JobName, actualSchedule.JobName)
assert.Equal(t, schedule.UserEmail, actualSchedule.UserEmail)
assert.Equal(t, schedule.Cron, actualSchedule.Cron)
assert.Equal(t, schedule.Tags, actualSchedule.Tags)
assert.Equal(t, schedule.NotificationEmails, actualSchedule.NotificationEmails)
assert.Equal(t, schedule.Group, actualSchedule.Group)
assert.Equal(t, schedule.Enabled, actualSchedule.Enabled)
}

func (suite *ScheduleTestSuite) TestScheduleRepository_EnableDisable() {
Expand Down Expand Up @@ -245,6 +270,20 @@ func (suite *ScheduleTestSuite) TestScheduleRepository_EnableDisable() {

}

func assertScheduleCompleteParam(t *testing.T, schedule model.Schedule) {
assert.NotNil(t, schedule)
assert.NotNil(t, schedule.CreatedAt)
assert.NotNil(t, schedule.UpdatedAt)
assert.NotEmpty(t, schedule.Args)
assert.NotEmpty(t, schedule.JobName)
assert.NotEmpty(t, schedule.UserEmail)
assert.NotEmpty(t, schedule.Cron)
assert.NotEmpty(t, schedule.Tags)
assert.NotEmpty(t, schedule.NotificationEmails)
assert.NotEmpty(t, schedule.Group)
assert.NotNil(t, schedule.Enabled)
}

func populateSeedDataForTest(repository ScheduleRepository, count int, seedField map[string]string) error {
for i := 0; i < count; i++ {
fake.Seed(0)
Expand Down
1 change: 1 addition & 0 deletions migrations/14_AddColumnTagsToSchedule.down.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
ALTER TABLE schedule DROP COLUMN if EXISTS tags;
1 change: 1 addition & 0 deletions migrations/14_AddColumnTagsToSchedule.up.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
ALTER TABLE schedule ADD COLUMN tags varchar(255);

0 comments on commit d0737c0

Please sign in to comment.