From 94215b0db08a108e24d720d248e1a79e60dce7ef Mon Sep 17 00:00:00 2001 From: Mitja Zivkovic Date: Sun, 23 Dec 2018 18:00:33 +0100 Subject: [PATCH] Rename content to record on crm/repository --- crm/repository/module.go | 2 +- crm/repository/{content.go => record.go} | 46 +++++++++---------- ...rt_builder.go => record_report_builder.go} | 22 ++++----- ..._test.go => record_report_builder_test.go} | 4 +- crm/service/record.go | 6 +-- crm/service/record_test.go | 24 +++++----- 6 files changed, 52 insertions(+), 52 deletions(-) rename crm/repository/{content.go => record.go} (83%) rename crm/repository/{content_report_builder.go => record_report_builder.go} (78%) rename crm/repository/{content_report_builder_test.go => record_report_builder_test.go} (86%) diff --git a/crm/repository/module.go b/crm/repository/module.go index 92097f356..708ba01c6 100644 --- a/crm/repository/module.go +++ b/crm/repository/module.go @@ -98,7 +98,7 @@ func (r *module) Fields(mod *types.Module) ([]*types.ModuleField, error) { return fields, r.db().Select(&fields, "select * from crm_module_form where module_id=? order by place asc", mod.ID) } -// FieldNames returns a slice of field names, used for ordering content row columns +// FieldNames returns a slice of field names, used for ordering record row columns func (r *module) FieldNames(mod *types.Module) ([]string, error) { if fields, err := r.Fields(mod); err != nil { return []string{}, err diff --git a/crm/repository/content.go b/crm/repository/record.go similarity index 83% rename from crm/repository/content.go rename to crm/repository/record.go index 17a8ab52d..78fd9d078 100644 --- a/crm/repository/content.go +++ b/crm/repository/record.go @@ -14,8 +14,8 @@ import ( ) type ( - ContentRepository interface { - With(ctx context.Context, db *factory.DB) ContentRepository + RecordRepository interface { + With(ctx context.Context, db *factory.DB) RecordRepository FindByID(id uint64) (*types.Record, error) @@ -38,28 +38,28 @@ type ( } FindResponse struct { - Meta FindResponseMeta `json:"meta"` - Contents []*types.Record `json:"contents"` + Meta FindResponseMeta `json:"meta"` + Records []*types.Record `json:"contents"` } - content struct { + record struct { *repository } ) -func Content(ctx context.Context, db *factory.DB) ContentRepository { - return (&content{}).With(ctx, db) +func Record(ctx context.Context, db *factory.DB) RecordRepository { + return (&record{}).With(ctx, db) } -func (r *content) With(ctx context.Context, db *factory.DB) ContentRepository { - return &content{ +func (r *record) With(ctx context.Context, db *factory.DB) RecordRepository { + return &record{ repository: r.repository.With(ctx, db), } } // @todo: update to accepted DeletedAt column semantics from SAM -func (r *content) FindByID(id uint64) (*types.Record, error) { +func (r *record) FindByID(id uint64) (*types.Record, error) { mod := &types.Record{} if err := r.db().Get(mod, "SELECT * FROM crm_record WHERE id=? and deleted_at IS NULL", id); err != nil { return nil, err @@ -67,8 +67,8 @@ func (r *content) FindByID(id uint64) (*types.Record, error) { return mod, nil } -func (r *content) Report(moduleID uint64, params *types.RecordReport) (results interface{}, err error) { - crb := NewContentReportBuilder(moduleID, params) +func (r *record) Report(moduleID uint64, params *types.RecordReport) (results interface{}, err error) { + crb := NewRecordReportBuilder(moduleID, params) var result = make([]map[string]interface{}, 0) @@ -85,7 +85,7 @@ func (r *content) Report(moduleID uint64, params *types.RecordReport) (results i } } -func (r *content) Find(moduleID uint64, query string, page int, perPage int, sort string) (*FindResponse, error) { +func (r *record) Find(moduleID uint64, query string, page int, perPage int, sort string) (*FindResponse, error) { if page < 0 { page = 0 } @@ -105,7 +105,7 @@ func (r *content) Find(moduleID uint64, query string, page int, perPage int, sor Query: query, Sort: sort, }, - Contents: make([]*types.Record, 0), + Records: make([]*types.Record, 0), } query = "%" + query + "%" @@ -200,14 +200,14 @@ func (r *content) Find(moduleID uint64, query string, page int, perPage int, sor if err := r.db().Get(&response.Meta.Count, sqlCount+" "+sqlWhere, moduleID, query); err != nil { return nil, err } - if err := r.db().Select(&response.Contents, sqlSelect+" "+sqlWhere+" "+sqlOrder+" "+sqlLimit, moduleID, query); err != nil { + if err := r.db().Select(&response.Records, sqlSelect+" "+sqlWhere+" "+sqlOrder+" "+sqlLimit, moduleID, query); err != nil { return nil, err } default: if err := r.db().Get(&response.Meta.Count, sqlCount+" "+sqlWhere, moduleID); err != nil { return nil, err } - if err := r.db().Select(&response.Contents, sqlSelect+" "+sqlWhere+" "+sqlOrder+" "+sqlLimit, moduleID); err != nil { + if err := r.db().Select(&response.Records, sqlSelect+" "+sqlWhere+" "+sqlOrder+" "+sqlLimit, moduleID); err != nil { return nil, err } } @@ -215,7 +215,7 @@ func (r *content) Find(moduleID uint64, query string, page int, perPage int, sor return response, nil } -func (r *content) Create(mod *types.Record) (*types.Record, error) { +func (r *record) Create(mod *types.Record) (*types.Record, error) { mod.ID = factory.Sonyflake.NextID() mod.CreatedAt = time.Now() mod.UserID = Identity(r.Context()) @@ -249,13 +249,13 @@ func (r *content) Create(mod *types.Record) (*types.Record, error) { return mod, nil } -func (r *content) Update(mod *types.Record) (*types.Record, error) { +func (r *record) Update(mod *types.Record) (*types.Record, error) { now := time.Now() mod.UpdatedAt = &now fields := make([]types.RecordColumn, 0) if err := json.Unmarshal(mod.Fields, &fields); err != nil { - return nil, errors.Wrap(err, "Error when saving content, no content") + return nil, errors.Wrap(err, "Error when saving record, no content") } r.db().Exec("delete from crm_record_links where record_id=?", mod.ID) @@ -279,16 +279,16 @@ func (r *content) Update(mod *types.Record) (*types.Record, error) { return mod, r.db().Replace("crm_record", mod) } -func (r *content) DeleteByID(id uint64) error { +func (r *record) DeleteByID(id uint64) error { _, err := r.db().Exec("update crm_record set deleted_at=? where id=?", time.Now(), id) return err } -func (r *content) Fields(content *types.Record) ([]*types.RecordColumn, error) { +func (r *record) Fields(record *types.Record) ([]*types.RecordColumn, error) { result := make([]*types.RecordColumn, 0) module := Module(r.ctx, r.db()) - mod, err := module.FindByID(content.ModuleID) + mod, err := module.FindByID(record.ModuleID) if err != nil { return result, err } @@ -303,7 +303,7 @@ func (r *content) Fields(content *types.Record) ([]*types.RecordColumn, error) { order := "FIELD(column_name" + strings.Repeat(",?", len(fieldNames)) + ")" args := []interface{}{ - content.ID, + record.ID, } for _, v := range fieldNames { args = append(args, v) diff --git a/crm/repository/content_report_builder.go b/crm/repository/record_report_builder.go similarity index 78% rename from crm/repository/content_report_builder.go rename to crm/repository/record_report_builder.go index aa5e694b5..7ab878e68 100644 --- a/crm/repository/content_report_builder.go +++ b/crm/repository/record_report_builder.go @@ -14,7 +14,7 @@ import ( ) type ( - contentReportBuilder struct { + recordReportBuilder struct { jsonField string moduleID uint64 @@ -23,18 +23,18 @@ type ( ) var ( - contentReportExprMatch = regexp.MustCompile(`^\s*(\w+)\((.+)\)\s*$`) + recordReportExprMatch = regexp.MustCompile(`^\s*(\w+)\((.+)\)\s*$`) ) -func NewContentReportBuilder(moduleID uint64, params *types.RecordReport) *contentReportBuilder { - return &contentReportBuilder{ +func NewRecordReportBuilder(moduleID uint64, params *types.RecordReport) *recordReportBuilder { + return &recordReportBuilder{ moduleID: moduleID, params: params, jsonField: `JSON_UNQUOTE(JSON_EXTRACT(json, REPLACE(JSON_UNQUOTE(JSON_SEARCH(json, 'one', ?)), '.name', '.value')))`, } } -func (b contentReportBuilder) field(name string) squirrel.Sqlizer { +func (b recordReportBuilder) field(name string) squirrel.Sqlizer { switch name { case "created_at", "updated_at": return squirrel.Expr(name) @@ -43,7 +43,7 @@ func (b contentReportBuilder) field(name string) squirrel.Sqlizer { } } -func (b contentReportBuilder) alias(col squirrel.Sqlizer, alias, fallback string) (squirrel.Sqlizer, string) { +func (b recordReportBuilder) alias(col squirrel.Sqlizer, alias, fallback string) (squirrel.Sqlizer, string) { if alias != "" { return squirrel.Alias(col, alias), alias } @@ -51,7 +51,7 @@ func (b contentReportBuilder) alias(col squirrel.Sqlizer, alias, fallback string return squirrel.Alias(col, fallback), fallback } -func (b contentReportBuilder) wrapInModifiers(col squirrel.Sqlizer, mm ...string) squirrel.Sqlizer { +func (b recordReportBuilder) wrapInModifiers(col squirrel.Sqlizer, mm ...string) squirrel.Sqlizer { for _, m := range mm { switch strings.ToUpper(m) { case "WEEKDAY": @@ -72,8 +72,8 @@ func (b contentReportBuilder) wrapInModifiers(col squirrel.Sqlizer, mm ...string return col } -func (b contentReportBuilder) parseExpression(exp string) squirrel.Sqlizer { - res := contentReportExprMatch.FindStringSubmatch(exp) +func (b recordReportBuilder) parseExpression(exp string) squirrel.Sqlizer { + res := recordReportExprMatch.FindStringSubmatch(exp) if len(res) > 0 { aggrFuncName := strings.ToUpper(res[1]) aggrFuncArgs := b.parseExpression(res[2]) @@ -92,7 +92,7 @@ func (b contentReportBuilder) parseExpression(exp string) squirrel.Sqlizer { return nil } -func (b *contentReportBuilder) Build() (sql string, args []interface{}, err error) { +func (b *recordReportBuilder) Build() (sql string, args []interface{}, err error) { report := squirrel. Select(). Column(squirrel.Alias(squirrel.Expr("COUNT(*)"), "count")). @@ -129,7 +129,7 @@ func (b *contentReportBuilder) Build() (sql string, args []interface{}, err erro return report.ToSql() } -func (b contentReportBuilder) Cast(row sqlx.ColScanner) map[string]interface{} { +func (b recordReportBuilder) Cast(row sqlx.ColScanner) map[string]interface{} { out := map[string]interface{}{} sqlx.MapScan(row, out) for k, v := range out { diff --git a/crm/repository/content_report_builder_test.go b/crm/repository/record_report_builder_test.go similarity index 86% rename from crm/repository/content_report_builder_test.go rename to crm/repository/record_report_builder_test.go index 5210231e6..5d6c97c23 100644 --- a/crm/repository/content_report_builder_test.go +++ b/crm/repository/record_report_builder_test.go @@ -4,8 +4,8 @@ import ( "testing" ) -func TestContentReportBuilder_parseExpression(t *testing.T) { - b := contentReportBuilder{jsonField: "JSONFIELD"} +func TestRecordReportBuilder_parseExpression(t *testing.T) { + b := recordReportBuilder{jsonField: "JSONFIELD"} tc := []struct { exp string diff --git a/crm/service/record.go b/crm/service/record.go index 2d4bacdfd..34afc668d 100644 --- a/crm/service/record.go +++ b/crm/service/record.go @@ -17,7 +17,7 @@ type ( db *factory.DB ctx context.Context - repository repository.ContentRepository + repository repository.RecordRepository pageRepo repository.PageRepository userSvc systemService.UserService @@ -50,7 +50,7 @@ func (s *record) With(ctx context.Context) RecordService { return &record{ db: db, ctx: ctx, - repository: repository.Content(ctx, db), + repository: repository.Record(ctx, db), pageRepo: repository.Page(ctx, db), userSvc: s.userSvc.With(ctx), } @@ -73,7 +73,7 @@ func (s *record) Find(moduleID uint64, query string, page int, perPage int, sort if err != nil { return nil, err } - if err := s.preloadAll(response.Contents, "user", "fields"); err != nil { + if err := s.preloadAll(response.Records, "user", "fields"); err != nil { return nil, err } return response, nil diff --git a/crm/service/record_test.go b/crm/service/record_test.go index bd1b1eaf9..b443df44a 100644 --- a/crm/service/record_test.go +++ b/crm/service/record_test.go @@ -184,40 +184,40 @@ func TestRecord(t *testing.T) { { mr, err := repository.Find(module.ID, "", 0, 20, "id desc") assert(t, err == nil, "Error when retrieving records: %+v", err) - assert(t, len(mr.Contents) == 2, "Expected two record, got %d", len(mr.Contents)) + assert(t, len(mr.Records) == 2, "Expected two record, got %d", len(mr.Records)) assert(t, mr.Meta.Count == 2, "Expected Meta.Count == 2, got %d", mr.Meta.Count) assert(t, mr.Meta.Sort == "id desc", "Expected Meta.Sort == id desc, got '%s'", mr.Meta.Sort) - assert(t, mr.Contents[0].ModuleID == m1.ModuleID, "Expected record module to match, %d != %d", m1.ModuleID, mr.Contents[0].ModuleID) - assert(t, mr.Contents[0].ID > mr.Contents[1].ID, "Expected order to be descending") + assert(t, mr.Records[0].ModuleID == m1.ModuleID, "Expected record module to match, %d != %d", m1.ModuleID, mr.Records[0].ModuleID) + assert(t, mr.Records[0].ID > mr.Records[1].ID, "Expected order to be descending") } // fetch all records { mr, err := repository.Find(module.ID, "", 0, 20, "name asc, email desc") assert(t, err == nil, "Error when retrieving records: %+v", err) - assert(t, len(mr.Contents) == 2, "Expected two record, got %d", len(mr.Contents)) + assert(t, len(mr.Records) == 2, "Expected two record, got %d", len(mr.Records)) assert(t, mr.Meta.Count == 2, "Expected Meta.Count == 2, got %d", mr.Meta.Count) assert(t, mr.Meta.Sort == "name asc, email desc", "Expected Meta.Sort == 'name asc, email desc' '%s'", mr.Meta.Sort) - assert(t, mr.Contents[0].ModuleID == m1.ModuleID, "Expected record module to match, %d != %d", m1.ModuleID, mr.Contents[0].ModuleID) - assert(t, mr.Contents[0].ID > mr.Contents[1].ID, "Expected order to be ascending") + assert(t, mr.Records[0].ModuleID == m1.ModuleID, "Expected record module to match, %d != %d", m1.ModuleID, mr.Records[0].ModuleID) + assert(t, mr.Records[0].ID > mr.Records[1].ID, "Expected order to be ascending") } // fetch all records { mr, err := repository.Find(module.ID, "", 0, 20, "created_at desc") assert(t, err == nil, "Error when retrieving records: %+v", err) - assert(t, len(mr.Contents) == 2, "Expected two record, got %d", len(mr.Contents)) + assert(t, len(mr.Records) == 2, "Expected two record, got %d", len(mr.Records)) assert(t, mr.Meta.Count == 2, "Expected Meta.Count == 2, got %d", mr.Meta.Count) assert(t, mr.Meta.Sort == "created_at desc", "Expected Meta.Sort == created_at desc, got '%s'", mr.Meta.Sort) - assert(t, mr.Contents[0].ModuleID == m1.ModuleID, "Expected record module to match, %d != %d", m1.ModuleID, mr.Contents[0].ModuleID) - assert(t, mr.Contents[0].ID > mr.Contents[1].ID, "Expected order to be ascending") + assert(t, mr.Records[0].ModuleID == m1.ModuleID, "Expected record module to match, %d != %d", m1.ModuleID, mr.Records[0].ModuleID) + assert(t, mr.Records[0].ID > mr.Records[1].ID, "Expected order to be ascending") } // fetch all records by query { mr, err := repository.Find(module.ID, "petric", 0, 20, "id desc") assert(t, err == nil, "Error when retrieving records: %+v", err) - assert(t, len(mr.Contents) == 1, "Expected one record, got %d", len(mr.Contents)) + assert(t, len(mr.Records) == 1, "Expected one record, got %d", len(mr.Records)) assert(t, mr.Meta.Count == 1, "Expected Meta.Count == 1, got %d", mr.Meta.Count) assert(t, mr.Meta.Page == 0, "Expected Meta.Page == 0, got %d", mr.Meta.Page) assert(t, mr.Meta.PerPage == 20, "Expected Meta.PerPage == 20, got %d", mr.Meta.PerPage) @@ -229,7 +229,7 @@ func TestRecord(t *testing.T) { { mr, err := repository.Find(module.ID, "niall", 0, 20, "id asc") assert(t, err == nil, "Error when retrieving records: %+v", err) - assert(t, len(mr.Contents) == 0, "Expected no records, got %d", len(mr.Contents)) + assert(t, len(mr.Records) == 0, "Expected no records, got %d", len(mr.Records)) } // delete record @@ -245,7 +245,7 @@ func TestRecord(t *testing.T) { { mr, err := repository.Find(module.ID, "", 0, 20, "") assert(t, err == nil, "Error when retrieving records: %+v", err) - assert(t, len(mr.Contents) == 0, "Expected no record, got %d", len(mr.Contents)) + assert(t, len(mr.Records) == 0, "Expected no record, got %d", len(mr.Records)) } } }