diff --git a/devdocs/specs/core-tags.txt b/devdocs/specs/core-tags.txt index 63d2b718..7f989d07 100644 --- a/devdocs/specs/core-tags.txt +++ b/devdocs/specs/core-tags.txt @@ -8,6 +8,7 @@ https://www.databasesoup.com/2015/01/tag-all-things.html https://www.npgsql.org/efcore/mapping/array.html https://www.postgresql.org/docs/current/arrays.html + 2018-12-05 Research showed that actually I'm doing tags all wrong and the multi table method is not correct performance wise or simplicity wise The winning method in a test using postgres was a text array of tags with a "gin" index see databasesoup link above. diff --git a/server/AyaNova/models/Widget.cs b/server/AyaNova/models/Widget.cs index 3d8a3d1c..5ac1379e 100644 --- a/server/AyaNova/models/Widget.cs +++ b/server/AyaNova/models/Widget.cs @@ -24,6 +24,7 @@ namespace AyaNova.Models public DateTime? EndDate { get; set; } public string Notes { get; set; } public int Count {get;set;} + public List Tags { get; set; } } diff --git a/server/AyaNova/util/AySchema.cs b/server/AyaNova/util/AySchema.cs index 4fdb3905..9478155c 100644 --- a/server/AyaNova/util/AySchema.cs +++ b/server/AyaNova/util/AySchema.cs @@ -22,7 +22,7 @@ namespace AyaNova.Util //!!!!WARNING: BE SURE TO UPDATE THE DbUtil::PrepareDatabaseForSeeding WHEN NEW TABLES ADDED!!!! private const int DESIRED_SCHEMA_LEVEL = 9; - internal const long EXPECTED_COLUMN_COUNT = 107; + internal const long EXPECTED_COLUMN_COUNT = 108; internal const long EXPECTED_INDEX_COUNT = 24; //!!!!WARNING: BE SURE TO UPDATE THE DbUtil::PrepareDatabaseForSeeding WHEN NEW TABLES ADDED!!!! @@ -205,7 +205,7 @@ namespace AyaNova.Util //Add widget table //id, text, longtext, boolean, currency, exec("CREATE TABLE awidget (id BIGSERIAL PRIMARY KEY, ownerid bigint not null, name varchar(255) not null, serial bigint not null," + - "startdate timestamp, enddate timestamp, dollaramount decimal(19,5), active bool, roles int4, count integer, notes text)"); + "startdate timestamp, enddate timestamp, dollaramount decimal(19,5), active bool, roles int4, count integer, notes text, tags varchar(255) ARRAY)"); //TEST TEST TEST ONLY FOR DEVELOPMENT TESTING TO ENSURE UNIQUENESS //exec("CREATE UNIQUE INDEX awidget_serial_idx ON awidget (serial);");