This commit is contained in:
2020-05-13 00:37:01 +00:00
parent 7fcf39d620
commit bddc3222d8

View File

@@ -1,6 +1,20 @@
PRIORITY - ALWAYS Lowest level stuff first
=-=-=-=-
todo: Opening the widgets list on a new empty db I got this error at server:
2020-05-02 13:20:40.4589|ERROR|Server|Error=>System.ArgumentNullException: Value cannot be null. (Parameter 'AyaDataList:GetCustomFieldDefinitionsForList, Custom field object type Widget has no FormCustom defined')
at AyaNova.DataList.AyaDataList.GetCustomFieldDefinitionsForList() in C:\data\code\raven\server\AyaNova\DataList\AyaDataList.cs:line 150
at AyaNova.DataList.AyaDataList.GenerateListColumnsJSONFromListView(JArray listViewArray) in C:\data\code\raven\server\AyaNova\DataList\AyaDataList.cs:line 49
at AyaNova.DataList.DataListFetcher.GetResponseAsync(String DataListKey, AyContext ct, ListOptions listOptions, Int64 UserId, AuthorizationRoles UserRoles) in C:\data\code\raven\server\AyaNova\DataList\DataListFetcher.cs:line 182
at AyaNova.Api.Controllers.DataListController.List(ListOptions listOptions) in C:\data\code\raven\server\AyaNova\Controllers\DataListController.cs:line 76
at Microsoft.AspNetCore.Mvc.Infrastructure.ActionMethodExecutor.TaskOfIActionResultExecutor.Execute(IActionResultTypeMapper mapper, ObjectMethodExecutor executor, Object controller, Object[] arguments)
at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<InvokeActionMethodAsync>g__Logged|12_1(ControllerActionInvoker invoker)
at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<InvokeNextActionFilterAsync>g__Awaited|10_0(ControllerActionInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Rethrow(ActionExecutedContextSealed context)
at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted)
at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<InvokeInnerFilterAsync>g__Awaited|13_0(ControllerActionInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeNextExceptionFilterAsync>g__Awaited|25_0(ResourceInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
todo: server bizobjectnamefetcherdirect isn't handling workorders properly (or other serialized objects)
- adde special handling if the name of the "name" column is "serial" or maybe can just run a special query instead?
todo: check non-ops user can login during seeding operation
todo: BizRoles.cs seems to get hammered on every single request, is it efficient?
- Why is it not cached in some way?
@@ -9,6 +23,7 @@ todo: BizRoles.cs seems to get hammered on every single request, is it efficient
if do so then ideally put them into the biz object responsible?
- it has to instantiate that anyway on any meaningful operation
or...is this worse than actually caching in a lifetime cache because it will need to load on every route hit whereas a lifteimte cache is just there from being loaded once?
---
todo: API REFACTORING (note: workordercontroller / biz should be following all these rules so it's the template if need reference)
todo: consider and then get rid of PATCH in all routes
unless compelling reason to keep
@@ -29,11 +44,21 @@ todo: Routes should check rights *BEFORE* they fetch the object, not after, all
i.e. delete route instantiates biz object, then it fetchs object from db *then* it checks if they have rights to delete (generically, not specific to that object)
This is out of order as it triggers a db call even if they have no rights to do it
todo: all biz objects "ExistsAsync" is this required / necessary?
---
todo: add query fail logging to datalist just like done with picklist so in production can catch mysterious problems more easily
todo: AUTO ID GENERATOR
change to a dedicated spot in global rather than inferring as it is not right practically for reasons
Get the auto-id most recent values at boot time
internal static void SetMostRecentAutoIdValuesFromDatabase(AyaNova.Models.AyContext ct)
internal static void SetMostRecentAutoIdValuesFromDatabase(AyaNova.Models.AyContext ct)
Server serialized fields, it should *not* be getting the value from the table but rather have it's own table with last number assigned instead
My plan has flaws, getting the number from teh last number used in the actual table is a bit fucked because it means you could end up with mutiple issues
Instead have central location for storing serial numbers (perhaps one per table type for concurrency efficieny? Though it's a pretty fast operation.)
Do not put in shared object though, i.e. global settings or something because it's going to be it's own thing and require efficient access.
Maybe this is a case for a stored procedure?
todo: change trial detection route that client first hits
- make it a different controller and renamed to something like server ping or "hello" or something friendly and useful
- maybe the route that gets Notifications
- because there could be a notificatoin type that doesn't need logged in users for general server down announcements etc
todo: Search get search result for workorder descendents doesn't fit into existing system due to it being a biz object wide feature but workorder having sub-get results
- CHILD objects need to point to their parent and be readable in code for searching and for opening objects based on child object
- so all child objects need a typeandid of the immediate parent
@@ -41,6 +66,13 @@ todo: Search get search result for workorder descendents doesn't fit into existi
- Required for opening a search result of a descendent that is not directly openable an
- Need parent AyaType as an ENUM ATTRIBUTE in the AyaType table for easy traversal
todo: search tables in schema, I think there is a missing index here, need to look at the search query section again as it was changed several times from the original schema creation
todo: add long polling notification route (CLIENT AND SERVER)
https://rockfish.ayanova.com/default.htm#!/rfcaseEdit/3507
- Need way to acknowledge receipt of long poll info from client to server so that it can be removed or something?
- maybe successfull sending clears it regardless of client?
todo: ability to mass tag items from list (SERVER AND CLIENT)
- also a good way to do an initial implementation of a mass ops UI code
todo: ability to mass rename a tag to something else in all objects (SERVER AND CLIENT)
todo: api / server landing page is shitty on a mobile
and really just shitty, add a logo or some shit
todo: Should server show uptime somewhere?
@@ -50,7 +82,10 @@ todo: Is there a log that records past jobs, how long can they be viewed?
todo: Rename the link to AyaNova App on the server page to just "AyaNova"
todo: translation cjkindex, no way to set this value currently
todo: Licensing - make sure tech type use license works properly: a tech license is consumed if a user has **any one** of the four roles of TechFull, TechLimited, SubcontractorFull, SubcontractorLimited
todo: BACKUP & related stuff that should be in v.initial release https://rockfish.ayanova.com/default.htm#!/rfcaseEdit/3369
todo: OPS routes (SERVER AND CLIENT)
- Backup, restore https://rockfish.ayanova.com/default.htm#!/rfcaseEdit/3369
- These need to be done fairly early on in order to have shit to play with for testing etc
BACKUP & related stuff that should be in v.initial release https://rockfish.ayanova.com/default.htm#!/rfcaseEdit/3369
todo: (BREAK THIS OUT INTO LATER/NOW/CASES) there are several outstanding AUTHENTICATION related cases in rockfish for RAVEN
e.g. https://rockfish.ayanova.com/default.htm#!/rfcaseEdit/1924
https://rockfish.ayanova.com/default.htm#!/rfcaseEdit/1835