From 6e8591ec8fc6da169f8de1e1152f2874a0822763 Mon Sep 17 00:00:00 2001 From: Tit Petric Date: Thu, 15 Nov 2018 15:18:17 +0100 Subject: [PATCH] upd(crm): return fields from content list/read, tests --- crm/repository/content.go | 18 +++++++++++++++--- crm/repository/content_test.go | 24 +++++++++++++++++------- crm/types/types.go | 2 +- 3 files changed, 33 insertions(+), 11 deletions(-) diff --git a/crm/repository/content.go b/crm/repository/content.go index 3d809e5e4..aa4093e2c 100644 --- a/crm/repository/content.go +++ b/crm/repository/content.go @@ -64,7 +64,7 @@ func (r *content) FindByID(id uint64) (*types.Content, error) { if err := r.db().Get(mod, "SELECT * FROM crm_content WHERE id=? and deleted_at IS NULL", id); err != nil { return nil, err } - return mod, r.prepare(mod, "page", "user") + return mod, r.prepare(mod, "page", "user", "fields") } func (r *content) Find(moduleID uint64, query string, page int, perPage int) (*FindResponse, error) { @@ -116,7 +116,7 @@ func (r *content) Find(moduleID uint64, query string, page int, perPage int) (*F } } - if err := r.prepareAll(response.Contents, "user"); err != nil { + if err := r.prepareAll(response.Contents, "user", "fields"); err != nil { return nil, err } @@ -144,7 +144,7 @@ func (r *content) Create(mod *types.Content) (*types.Content, error) { return nil, err } - return mod, r.prepare(mod, "user") + return mod, r.prepare(mod, "user", "fields") } func (r *content) Update(mod *types.Content) (*types.Content, error) { @@ -212,6 +212,18 @@ func (r *content) prepare(content *types.Content, fields ...string) (err error) usersAPI := systemRepository.User(r.Context(), r.db()) for _, field := range fields { switch field { + case "fields": + fields, err := r.Fields(content) + if err != nil { + return err + } + json, err := json.Marshal(fields) + if err != nil { + return err + } + if err := (&content.Fields).Scan(json); err != nil { + return err + } case "page": if content.Page, err = api.FindByModuleID(content.ModuleID); err != nil { return diff --git a/crm/repository/content_test.go b/crm/repository/content_test.go index 911e7ee37..38df606bb 100644 --- a/crm/repository/content_test.go +++ b/crm/repository/content_test.go @@ -89,13 +89,23 @@ func TestContent(t *testing.T) { assert(t, ms.ID == m.ID, "Expected ID from database to match, %d != %d", m.ID, ms.ID) assert(t, ms.ModuleID == m.ModuleID, "Expected Module ID from database to match, %d != %d", m.ModuleID, ms.ModuleID) - fields, err := repository.Fields(ms) - // fields := make([]testContentRow, 0) - // err = json.Unmarshal(ms.Fields, &fields) - assert(t, err == nil, "%+v", errors.Wrap(err, "Didn't expect error when unmarshalling")) - assert(t, len(fields) == 2, "Expected different field count: %d != %d", 2, len(fields)) - assert(t, fields[0].Name == "name", "Expected field.0 type = name, got %s", fields[0].Name) - assert(t, fields[1].Name == "email", "Expected field.1 type = email, got %s", fields[1].Name) + { + fields, err := repository.Fields(ms) + // fields := make([]testContentRow, 0) + // err = json.Unmarshal(ms.Fields, &fields) + assert(t, err == nil, "%+v", errors.Wrap(err, "Didn't expect error when unmarshalling")) + assert(t, len(fields) == 2, "Expected different field count: %d != %d", 2, len(fields)) + assert(t, fields[0].Name == "name", "Expected field.0 type = name, got %s", fields[0].Name) + assert(t, fields[1].Name == "email", "Expected field.1 type = email, got %s", fields[1].Name) + } + { + fields := make([]types.ContentColumn, 0) + err := json.Unmarshal(ms.Fields, &fields) + assert(t, err == nil, "%+v", errors.Wrap(err, "Didn't expect error when unmarshalling")) + assert(t, len(fields) == 2, "Expected different field count: %d != %d", 2, len(fields)) + assert(t, fields[0].Name == "name", "Expected field.0 type = name, got %s", fields[0].Name) + assert(t, fields[1].Name == "email", "Expected field.1 type = email, got %s", fields[1].Name) + } } // update created content diff --git a/crm/types/types.go b/crm/types/types.go index 316671b68..74b6fdb14 100644 --- a/crm/types/types.go +++ b/crm/types/types.go @@ -28,7 +28,7 @@ type ( // ContentColumn is a stored row in the `content_column` table ContentColumn struct { - ContentID uint64 `json:"contentID,string" db:"content_id"` + ContentID uint64 `json:"-" db:"content_id"` Name string `json:"name" db:"column_name"` Value string `json:"value" db:"column_value"` }