From 6641179132dbb4cbdac0a07d4ff11a23dbcf8966 Mon Sep 17 00:00:00 2001 From: John Cardinal Date: Fri, 7 Sep 2018 20:24:56 +0000 Subject: [PATCH] --- devdocs/todo.txt | 11 +---------- server/AyaNova/biz/TagGroupMapBiz.cs | 14 ++++++++++---- server/AyaNova/biz/TagMapBiz.cs | 10 ++++++++-- server/AyaNova/util/AySchema.cs | 2 +- 4 files changed, 20 insertions(+), 17 deletions(-) diff --git a/devdocs/todo.txt b/devdocs/todo.txt index 0473c9d5..ee2e21ea 100644 --- a/devdocs/todo.txt +++ b/devdocs/todo.txt @@ -27,16 +27,7 @@ Once that is done then can steam ahead on the biz objects but until I have the c IMMEDIATE ITEMS: ================ - - - - Tag groups (modify tags already coded) - - - Tag: add test for untag everything - - TAG: add test that can't delete if it's in a taggroup mapping - - TAGGrOUP: add tests for all crud ops - - TESTS: Make a test for each type of group operation from biz point of view - - TAGMAP: CREATEASYNC code to tag an item should take into account if it's already tagged and not make a new record, just return existing - - TAGGROUPMAP: add tagGROUPMAP CREATEASYNC should take into account if already added //TODO: see if already present and just return inObj if so + Happy monday Radiant Maiden ;) - Need an ObjectExists type object for checking if something exists when specified by type and ID - Could this be a combined method to get the name as well just to save time? - Or should that be another method (YES, first code a translator to translate types to db tables (however the fuck that works with EF), then can use it in turn to verify existance and get name separately) diff --git a/server/AyaNova/biz/TagGroupMapBiz.cs b/server/AyaNova/biz/TagGroupMapBiz.cs index d532cc52..4a97e2a1 100644 --- a/server/AyaNova/biz/TagGroupMapBiz.cs +++ b/server/AyaNova/biz/TagGroupMapBiz.cs @@ -30,13 +30,19 @@ namespace AyaNova.Biz } - + //////////////////////////////////////////////////////////////////////////////////////////////// //CREATE internal async Task CreateAsync(TagGroupMapInfo inObj) { - //TODO: see if already present and just return inObj if so - // if(ct.TagGroupMap.Any().where) + + //Is this taggroup mapping already present? + var Existing = await ct.TagGroupMap.Where(m => m.TagId == inObj.TagId && m.TagGroupId == inObj.TagGroupId).FirstOrDefaultAsync(); + if (Existing != null) + { + //yup so just return it, don't make a new one + return Existing; + } Validate(inObj, true); @@ -86,7 +92,7 @@ namespace AyaNova.Biz } - + //////////////////////////////////////////////////////////////////////////////////////////////// diff --git a/server/AyaNova/biz/TagMapBiz.cs b/server/AyaNova/biz/TagMapBiz.cs index 65dc13f9..249d7c2c 100644 --- a/server/AyaNova/biz/TagMapBiz.cs +++ b/server/AyaNova/biz/TagMapBiz.cs @@ -30,12 +30,18 @@ namespace AyaNova.Biz } - + //////////////////////////////////////////////////////////////////////////////////////////////// //CREATE internal async Task CreateAsync(TagMapInfo inObj) { -//TODO: Does object exist before attempting to tag it?? + //Is this tag already present? + var Existing = await ct.TagMap.Where(m => m.TagId == inObj.TagId && m.TagToObjectId == inObj.TagToObjectId && m.TagToObjectType == inObj.TagToObjectType).FirstOrDefaultAsync(); + if (Existing != null) + { + //yup so just return it, don't make a new one + return Existing; + } Validate(inObj, true); if (HasErrors) diff --git a/server/AyaNova/util/AySchema.cs b/server/AyaNova/util/AySchema.cs index cefc1594..079abd16 100644 --- a/server/AyaNova/util/AySchema.cs +++ b/server/AyaNova/util/AySchema.cs @@ -205,7 +205,7 @@ namespace AyaNova.Util if (currentSchema < 6) { LogUpdateMessage(log); - + // LOOKAT: Should taggroupmap have an index that enforces no taggroup can have the same tag more than once? Same for objects being tagged? exec("CREATE TABLE atag (id BIGSERIAL PRIMARY KEY, ownerid bigint not null, name varchar(255) not null)"); exec("CREATE UNIQUE INDEX tagname_idx ON atag (name);"); exec("CREATE TABLE atagmap (id BIGSERIAL PRIMARY KEY, ownerid bigint not null," +