This commit is contained in:
2018-10-08 20:07:38 +00:00
parent d58ede8fd3
commit 7df84c1ce8
9 changed files with 275 additions and 14 deletions

View File

@@ -28,7 +28,6 @@ Once that is done then can steam ahead on the biz objects but until I have the c
IMMEDIATE ITEMS:
================
- Auto visible id number assigning code
- Give widgets a visible ID number scheme and add to tests
- Ensure search code process keywords includes the Visible ID value andadd test for that in Search indexing tests

View File

@@ -674,3 +674,206 @@ test\raven-integration\Widget\WidgetLists.cs, code is 45, comment is 13, blank i
test\raven-integration\Widget\WidgetRights.cs, code is 139, comment is 62, blank is 62.
test\raven-integration\Widget\WidgetValidationTests.cs, code is 139, comment is 58, blank is 67.
===============================================================================
===============================================================================
EXTENSION NAME : linecount
EXTENSION VERSION : 0.1.7
-------------------------------------------------------------------------------
count time : 2018-10-08 12:38:32
count workspace : c:\data\code\raven
total files : 191
total code lines : 12483
total comment lines : 5491
total blank lines : 4637
dist\docker\linux-x64\ayanovadocker\dockerfile, code is 4, comment is 0, blank is 0.
dist\docker\linux-x64\docker-compose.yml, code is 47, comment is 2, blank is 5.
dist\docker\linux-x64\docker-compose.yml.original.b4.metrics, code is 37, comment is 1, blank is 4.
dist\docker\linux-x64\host\docker-nginx-ayanova-sample-config\letsencrypt\docker-compose.yml, code is 15, comment is 0, blank is 3.
dist\docker\linux-x64\host\docker-nginx-ayanova-sample-config\letsencrypt\letsencrypt-site\index.html, code is 5, comment is 0, blank is 0.
dist\docker\linux-x64\host\docker-nginx-ayanova-sample-config\letsencrypt\nginx.conf, code is 11, comment is 0, blank is 2.
dist\docker\linux-x64\host\docker-nginx-ayanova-sample-config\production\dh-param\dhparam-2048.pem, code is 8, comment is 1, blank is 0.
dist\docker\linux-x64\host\docker-nginx-ayanova-sample-config\production\docker-compose.yml, code is 19, comment is 0, blank is 3.
dist\docker\linux-x64\host\docker-nginx-ayanova-sample-config\production\production-site\index.html, code is 13, comment is 0, blank is 0.
dist\docker\linux-x64\host\docker-nginx-ayanova-sample-config\production\production.conf, code is 120, comment is 6, blank is 13.
dist\docker\linux-x64\restartnginx.sh, code is 3, comment is 3, blank is 0.
makedocs.bat, code is 3, comment is 0, blank is 0.
makedocs.sh, code is 2, comment is 1, blank is 0.
server\AyaNova\appsettings.Development.json, code is 10, comment is 0, blank is 0.
server\AyaNova\appsettings.json, code is 15, comment is 0, blank is 2.
server\AyaNova\AyaNova.csproj, code is 13, comment is 0, blank is 1.
server\AyaNova\biz\AttachableAttribute.cs, code is 8, comment is 7, blank is 1.
server\AyaNova\biz\AuthorizationRoles.cs, code is 27, comment is 26, blank is 6.
server\AyaNova\biz\AyaEvent.cs, code is 18, comment is 8, blank is 7.
server\AyaNova\biz\AyaObjectOwnerId.cs, code is 27, comment is 7, blank is 16.
server\AyaNova\biz\AyaType.cs, code is 26, comment is 131, blank is 13.
server\AyaNova\biz\AyaTypeId.cs, code is 74, comment is 20, blank is 26.
server\AyaNova\biz\BizObject.cs, code is 57, comment is 5, blank is 29.
server\AyaNova\biz\BizObjectExistsInDatabase.cs, code is 42, comment is 7, blank is 21.
server\AyaNova\biz\BizObjectFactory.cs, code is 40, comment is 4, blank is 15.
server\AyaNova\biz\BizObjectNameFetcher.cs, code is 24, comment is 30, blank is 18.
server\AyaNova\biz\BizObjectNameFetcherDirect.cs, code is 49, comment is 6, blank is 15.
server\AyaNova\biz\BizRoles.cs, code is 110, comment is 67, blank is 40.
server\AyaNova\biz\BizRoleSet.cs, code is 9, comment is 5, blank is 3.
server\AyaNova\biz\EventLogProcessor.cs, code is 64, comment is 34, blank is 32.
server\AyaNova\biz\IBizObject.cs, code is 15, comment is 24, blank is 16.
server\AyaNova\biz\IImportAyaNova7Object.cs, code is 13, comment is 13, blank is 6.
server\AyaNova\biz\IJobObject.cs, code is 8, comment is 9, blank is 5.
server\AyaNova\biz\ImportAyaNova7Biz.cs, code is 132, comment is 73, blank is 61.
server\AyaNova\biz\JobOperationsBiz.cs, code is 68, comment is 8, blank is 32.
server\AyaNova\biz\JobsBiz.cs, code is 202, comment is 106, blank is 76.
server\AyaNova\biz\JobStatus.cs, code is 10, comment is 4, blank is 4.
server\AyaNova\biz\JobType.cs, code is 11, comment is 5, blank is 6.
server\AyaNova\biz\LocaleBiz.cs, code is 372, comment is 90, blank is 111.
server\AyaNova\biz\PrimeData.cs, code is 65, comment is 22, blank is 28.
server\AyaNova\biz\Search.cs, code is 528, comment is 227, blank is 156.
server\AyaNova\biz\TagBiz.cs, code is 279, comment is 124, blank is 93.
server\AyaNova\biz\TaggableAttribute.cs, code is 8, comment is 7, blank is 1.
server\AyaNova\biz\TagGroupBiz.cs, code is 185, comment is 77, blank is 77.
server\AyaNova\biz\TagGroupMapBiz.cs, code is 65, comment is 34, blank is 42.
server\AyaNova\biz\TagMapBiz.cs, code is 88, comment is 50, blank is 48.
server\AyaNova\biz\TrialBiz.cs, code is 47, comment is 24, blank is 23.
server\AyaNova\biz\UserBiz.cs, code is 405, comment is 320, blank is 139.
server\AyaNova\biz\UserOptionsBiz.cs, code is 58, comment is 28, blank is 35.
server\AyaNova\biz\UserType.cs, code is 13, comment is 56, blank is 4.
server\AyaNova\biz\ValidateJsonPatch.cs, code is 49, comment is 3, blank is 15.
server\AyaNova\biz\ValidationError.cs, code is 9, comment is 2, blank is 3.
server\AyaNova\biz\ValidationErrorType.cs, code is 14, comment is 2, blank is 8.
server\AyaNova\biz\WidgetBiz.cs, code is 231, comment is 82, blank is 92.
server\AyaNova\ControllerHelpers\ApiCreatedResponse.cs, code is 11, comment is 2, blank is 8.
server\AyaNova\ControllerHelpers\ApiCustomExceptionFilter.cs, code is 53, comment is 29, blank is 19.
server\AyaNova\ControllerHelpers\ApiDetailError.cs, code is 16, comment is 5, blank is 10.
server\AyaNova\ControllerHelpers\ApiError.cs, code is 21, comment is 5, blank is 12.
server\AyaNova\ControllerHelpers\ApiErrorCode.cs, code is 24, comment is 5, blank is 9.
server\AyaNova\ControllerHelpers\ApiErrorCodeStockMessage.cs, code is 43, comment is 8, blank is 8.
server\AyaNova\ControllerHelpers\ApiErrorResponse.cs, code is 60, comment is 11, blank is 35.
server\AyaNova\ControllerHelpers\ApiNotAuthorizedResponse.cs, code is 20, comment is 4, blank is 11.
server\AyaNova\ControllerHelpers\ApiOkResponse.cs, code is 11, comment is 2, blank is 8.
server\AyaNova\ControllerHelpers\ApiOkWithPagingResponse.cs, code is 14, comment is 7, blank is 11.
server\AyaNova\ControllerHelpers\ApiPagedResponse.cs, code is 15, comment is 2, blank is 9.
server\AyaNova\ControllerHelpers\ApiServerState.cs, code is 115, comment is 39, blank is 38.
server\AyaNova\ControllerHelpers\ApiUploadProcessor.cs, code is 124, comment is 45, blank is 42.
server\AyaNova\ControllerHelpers\Authorized.cs, code is 75, comment is 70, blank is 40.
server\AyaNova\ControllerHelpers\DisableFormValueModelBindingAttribute.cs, code is 31, comment is 14, blank is 5.
server\AyaNova\ControllerHelpers\MultipartRequestHelper.cs, code is 42, comment is 28, blank is 7.
server\AyaNova\ControllerHelpers\PaginationLinkBuilder.cs, code is 63, comment is 7, blank is 20.
server\AyaNova\ControllerHelpers\PagingOptions.cs, code is 17, comment is 0, blank is 6.
server\AyaNova\ControllerHelpers\UserIdFromContext.cs, code is 14, comment is 1, blank is 2.
server\AyaNova\ControllerHelpers\UserLocaleIdFromContext.cs, code is 14, comment is 1, blank is 1.
server\AyaNova\ControllerHelpers\UserNameFromContext.cs, code is 15, comment is 1, blank is 5.
server\AyaNova\ControllerHelpers\UserRolesFromContext.cs, code is 13, comment is 1, blank is 5.
server\AyaNova\Controllers\ApiRootController.cs, code is 42, comment is 25, blank is 13.
server\AyaNova\Controllers\AttachmentController.cs, code is 246, comment is 141, blank is 79.
server\AyaNova\Controllers\AuthController.cs, code is 101, comment is 47, blank is 25.
server\AyaNova\Controllers\AyaTypeController.cs, code is 48, comment is 15, blank is 20.
server\AyaNova\Controllers\BackupController.cs, code is 38, comment is 127, blank is 40.
server\AyaNova\Controllers\EventLogController.cs, code is 90, comment is 32, blank is 31.
server\AyaNova\Controllers\ImportAyaNova7Controller.cs, code is 166, comment is 73, blank is 48.
server\AyaNova\Controllers\JobOperationsController.cs, code is 68, comment is 35, blank is 33.
server\AyaNova\Controllers\LicenseController.cs, code is 116, comment is 48, blank is 40.
server\AyaNova\Controllers\LocaleController.cs, code is 245, comment is 101, blank is 84.
server\AyaNova\Controllers\LogFilesController.cs, code is 78, comment is 35, blank is 35.
server\AyaNova\Controllers\MetricsController.cs, code is 81, comment is 34, blank is 24.
server\AyaNova\Controllers\SearchController.cs, code is 45, comment is 23, blank is 16.
server\AyaNova\Controllers\ServerStateController.cs, code is 64, comment is 42, blank is 22.
server\AyaNova\Controllers\TagController.cs, code is 163, comment is 84, blank is 59.
server\AyaNova\Controllers\TagGroupController.cs, code is 178, comment is 97, blank is 66.
server\AyaNova\Controllers\TagGroupMapController.cs, code is 112, comment is 38, blank is 48.
server\AyaNova\Controllers\TagMapController.cs, code is 147, comment is 54, blank is 65.
server\AyaNova\Controllers\TrialController.cs, code is 73, comment is 26, blank is 19.
server\AyaNova\Controllers\UserController.cs, code is 225, comment is 99, blank is 77.
server\AyaNova\Controllers\UserOptionsController.cs, code is 143, comment is 47, blank is 46.
server\AyaNova\Controllers\WidgetController.cs, code is 184, comment is 110, blank is 68.
server\AyaNova\generator\BackgroundService.cs, code is 43, comment is 13, blank is 16.
server\AyaNova\generator\CoreJobMetricsReport.cs, code is 23, comment is 15, blank is 19.
server\AyaNova\generator\CoreJobMetricsSnapshot.cs, code is 70, comment is 26, blank is 40.
server\AyaNova\generator\CoreJobSweeper.cs, code is 74, comment is 30, blank is 28.
server\AyaNova\generator\Generate.cs, code is 65, comment is 27, blank is 32.
server\AyaNova\models\AyContext.cs, code is 70, comment is 13, blank is 17.
server\AyaNova\models\dto\ImportV7MapItem.cs, code is 15, comment is 3, blank is 3.
server\AyaNova\models\dto\JobOperationsFetchInfo.cs, code is 13, comment is 23, blank is 4.
server\AyaNova\models\dto\JobOperationsLogInfoItem.cs, code is 10, comment is 11, blank is 5.
server\AyaNova\models\dto\NameIdActiveItem.cs, code is 9, comment is 0, blank is 3.
server\AyaNova\models\dto\NameIdItem.cs, code is 8, comment is 0, blank is 2.
server\AyaNova\models\dto\NameItem.cs, code is 7, comment is 3, blank is 2.
server\AyaNova\models\dto\NewTextIdConcurrencyTokenItem.cs, code is 9, comment is 0, blank is 2.
server\AyaNova\models\dto\TagGroupMapInfo.cs, code is 9, comment is 0, blank is 4.
server\AyaNova\models\dto\TagMapGroupInfo.cs, code is 10, comment is 1, blank is 4.
server\AyaNova\models\dto\TagMapInfo.cs, code is 10, comment is 1, blank is 3.
server\AyaNova\models\dto\TypeAndIdInfo.cs, code is 9, comment is 0, blank is 4.
server\AyaNova\models\dto\UploadedFileInfo.cs, code is 9, comment is 3, blank is 2.
server\AyaNova\models\Event.cs, code is 54, comment is 6, blank is 9.
server\AyaNova\models\FileAttachment.cs, code is 24, comment is 3, blank is 4.
server\AyaNova\models\License.cs, code is 14, comment is 0, blank is 6.
server\AyaNova\models\Locale.cs, code is 27, comment is 9, blank is 11.
server\AyaNova\models\LocaleItem.cs, code is 20, comment is 1, blank is 7.
server\AyaNova\models\OpsJob.cs, code is 42, comment is 9, blank is 11.
server\AyaNova\models\OpsJobLog.cs, code is 23, comment is 3, blank is 9.
server\AyaNova\models\SearchDictionary.cs, code is 14, comment is 1, blank is 5.
server\AyaNova\models\SearchKey.cs, code is 19, comment is 0, blank is 6.
server\AyaNova\models\Tag.cs, code is 16, comment is 1, blank is 5.
server\AyaNova\models\TagGroup.cs, code is 16, comment is 1, blank is 5.
server\AyaNova\models\TagGroupMap.cs, code is 18, comment is 0, blank is 5.
server\AyaNova\models\TagMap.cs, code is 20, comment is 0, blank is 5.
server\AyaNova\models\User.cs, code is 40, comment is 80, blank is 5.
server\AyaNova\models\UserOptions.cs, code is 29, comment is 82, blank is 8.
server\AyaNova\models\Widget.cs, code is 22, comment is 1, blank is 6.
server\AyaNova\Program.cs, code is 170, comment is 35, blank is 47.
server\AyaNova\Startup.cs, code is 267, comment is 79, blank is 125.
server\AyaNova\SwaggerDefaultValues.cs, code is 30, comment is 12, blank is 5.
server\AyaNova\util\ApplicationLogging.cs, code is 10, comment is 4, blank is 3.
server\AyaNova\util\AutoId.cs, code is 24, comment is 1, blank is 2.
server\AyaNova\util\AyaNovaVersion.cs, code is 20, comment is 5, blank is 6.
server\AyaNova\util\AySchema.cs, code is 172, comment is 78, blank is 91.
server\AyaNova\util\CopyObject.cs, code is 46, comment is 14, blank is 10.
server\AyaNova\util\DateUtil.cs, code is 29, comment is 30, blank is 12.
server\AyaNova\util\DbUtil.cs, code is 307, comment is 77, blank is 100.
server\AyaNova\util\EnumAttributeExtension.cs, code is 23, comment is 11, blank is 2.
server\AyaNova\util\ExceptionUtil.cs, code is 18, comment is 8, blank is 8.
server\AyaNova\util\FileHash.cs, code is 18, comment is 2, blank is 7.
server\AyaNova\util\FileUtil.cs, code is 254, comment is 140, blank is 78.
server\AyaNova\util\Hasher.cs, code is 26, comment is 16, blank is 13.
server\AyaNova\util\IsLocalExtension.cs, code is 21, comment is 4, blank is 6.
server\AyaNova\util\License.cs, code is 405, comment is 121, blank is 115.
server\AyaNova\util\MetricsRegistry.cs, code is 60, comment is 81, blank is 26.
server\AyaNova\util\RetryHelper.cs, code is 29, comment is 14, blank is 11.
server\AyaNova\util\Seeder.cs, code is 239, comment is 92, blank is 95.
server\AyaNova\util\ServerBootConfig.cs, code is 123, comment is 38, blank is 51.
server\AyaNova\util\ServiceProviderProvider.cs, code is 35, comment is 12, blank is 11.
server\AyaNova\util\StringUtil.cs, code is 42, comment is 37, blank is 20.
server\AyaNova\wwwroot\api\sw.css, code is 6, comment is 0, blank is 0.
server\AyaNova\wwwroot\index.htm, code is 48, comment is 3, blank is 10.
startinflux.bat, code is 3, comment is 0, blank is 0.
startsql.bat, code is 1, comment is 0, blank is 0.
startsql.sh, code is 1, comment is 1, blank is 0.
test\raven-integration\ApiResponse.cs, code is 10, comment is 2, blank is 3.
test\raven-integration\ApiTextResponse.cs, code is 10, comment is 2, blank is 3.
test\raven-integration\Attachments\AttachmentTest.cs, code is 90, comment is 45, blank is 50.
test\raven-integration\Authentication\Auth.cs, code is 19, comment is 13, blank is 6.
test\raven-integration\AyaType\AyaType.cs, code is 22, comment is 8, blank is 8.
test\raven-integration\EventLog\EventLog.cs, code is 71, comment is 33, blank is 30.
test\raven-integration\ImportV7\ImportV7.cs, code is 32, comment is 11, blank is 16.
test\raven-integration\JobOperations\JobOperations.cs, code is 30, comment is 16, blank is 15.
test\raven-integration\Locale\Locale.cs, code is 88, comment is 47, blank is 33.
test\raven-integration\Locale\RequestedLocaleKeys.cs, code is 42, comment is 11, blank is 17.
test\raven-integration\LogFiles\LogFiles.cs, code is 19, comment is 7, blank is 8.
test\raven-integration\Metrics\Metrics.cs, code is 27, comment is 9, blank is 17.
test\raven-integration\Privacy\Privacy.cs, code is 16, comment is 6, blank is 8.
test\raven-integration\raven-integration.csproj, code is 14, comment is 0, blank is 3.
test\raven-integration\Search\SearchOps.cs, code is 349, comment is 103, blank is 117.
test\raven-integration\ServerState\ServerStateTest.cs, code is 13, comment is 37, blank is 31.
test\raven-integration\Tags\TagCrud.cs, code is 46, comment is 31, blank is 31.
test\raven-integration\Tags\TagGroupOps.cs, code is 72, comment is 29, blank is 41.
test\raven-integration\Tags\TagLists.cs, code is 52, comment is 10, blank is 22.
test\raven-integration\Tags\TagMapOps.cs, code is 195, comment is 93, blank is 95.
test\raven-integration\testdata\ayanova.data.dump.xxx.zip, it is a binary file.
test\raven-integration\testdata\test.png, it is a binary file.
test\raven-integration\testdata\test.zip, it is a binary file.
test\raven-integration\User\UserCrud.cs, code is 203, comment is 83, blank is 59.
test\raven-integration\User\UserInactive.cs, code is 18, comment is 6, blank is 9.
test\raven-integration\User\UserOptionsRu.cs, code is 68, comment is 36, blank is 30.
test\raven-integration\util.cs, code is 14, comment is 1, blank is 3.
test\raven-integration\Widget\WidgetCrud.cs, code is 113, comment is 57, blank is 59.
test\raven-integration\Widget\WidgetLists.cs, code is 45, comment is 13, blank is 18.
test\raven-integration\Widget\WidgetRights.cs, code is 139, comment is 62, blank is 62.
test\raven-integration\Widget\WidgetValidationTests.cs, code is 139, comment is 58, blank is 67.
===============================================================================

View File

@@ -404,13 +404,27 @@ namespace AyaNova
//TESTING
if (TESTING_REFRESH_DB)
{
AyaNova.Core.License.Fetch(apiServerState, dbContext, _log);
Util.Seeder.SeedDatabase(Util.Seeder.SeedLevel.HugeForLoadTest);
AyaNova.Core.License.Fetch(apiServerState, dbContext, _log);
Util.Seeder.SeedDatabase(Util.Seeder.SeedLevel.SmallOneManShopTrialDataSet);
}
//TESTING
#endif
//TEST AUTOID
//Note that seeder may init this already in which case this code doesn't even need to run
if (ServerBootConfig.WIDGET_SERIAL == null)
{
//query for most recently used serial number
//(note, can't query for highest serial as it can and likely will reset or be changed manually from time to time
// so the algorithm is to keep the most recent sequence going on startup of the server)
var MostRecentWidget = dbContext.Widget.AsNoTracking().OrderByDescending(x => x.Id).FirstOrDefault();
uint MaxWidgetId = 0;
if (MostRecentWidget != null)
MaxWidgetId = MostRecentWidget.Serial;
ServerBootConfig.WIDGET_SERIAL = new AutoId(MaxWidgetId);
}
//Open up the server for visitors
apiServerState.SetOpen();

View File

@@ -37,7 +37,7 @@ namespace AyaNova.Biz
return new WidgetBiz(ct, 1, ServerBootConfig.AYANOVA_DEFAULT_LANGUAGE_ID, AuthorizationRoles.BizAdminFull);
}
////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////
//EXISTS
internal async Task<bool> ExistsAsync(long id)
{
@@ -50,7 +50,7 @@ namespace AyaNova.Biz
{
//This is simple so nothing more here, but often will be copying to a different output object or some other ops
return await ct.Widget.SingleOrDefaultAsync(m => m.Id == fetchId);
}
}
////////////////////////////////////////////////////////////////////////////////////////////////
//CREATE
@@ -65,6 +65,9 @@ namespace AyaNova.Biz
Widget outObj = inObj;
outObj.OwnerId = UserId;
//Test get serial id visible id number from generator
outObj.Serial = ServerBootConfig.WIDGET_SERIAL.GetNext();
await ct.Widget.AddAsync(outObj);
await ct.SaveChangesAsync();
@@ -73,7 +76,7 @@ namespace AyaNova.Biz
//EVENT LOG
EventLogProcessor.LogEventToDatabase(new Event(UserId, outObj.Id, BizType, AyaEvent.Created), ct);
//SEARCH INDEXING
Search.ProcessNewObjectKeywords(ct, UserLocaleId, outObj.Id, BizType, outObj.Name, outObj.Notes, outObj.Name);
@@ -94,6 +97,9 @@ namespace AyaNova.Biz
//do stuff with widget
Widget outObj = inObj;
outObj.OwnerId = UserId;
//Test get serial id visible id number from generator
outObj.Serial = ServerBootConfig.WIDGET_SERIAL.GetNext();
TempContext.Widget.Add(outObj);
TempContext.SaveChanges();
@@ -121,7 +127,7 @@ namespace AyaNova.Biz
if (ret != null)
{
//Log
EventLogProcessor.LogEventToDatabase(new Event(UserId, fetchId, BizType, AyaEvent.Retrieved), ct);
EventLogProcessor.LogEventToDatabase(new Event(UserId, fetchId, BizType, AyaEvent.Retrieved), ct);
}
return ret;
}
@@ -206,7 +212,7 @@ namespace AyaNova.Biz
{
//Replace the db object with the PUT object
CopyObject.Copy(inObj, dbObj, "Id");
CopyObject.Copy(inObj, dbObj, "Id,Serial");
//Set "original" value of concurrency token to input token
//this will allow EF to check it out
ct.Entry(dbObj).OriginalValues["ConcurrencyToken"] = inObj.ConcurrencyToken;
@@ -217,7 +223,7 @@ namespace AyaNova.Biz
//Log modification
EventLogProcessor.LogEventToDatabase(new Event(UserId, dbObj.Id, BizType, AyaEvent.Modified), ct);
//Update keywords
Search.ProcessUpdatedObjectKeywords(ct, UserLocaleId, dbObj.Id, BizType, dbObj.Name, dbObj.Notes, dbObj.Name);
@@ -239,7 +245,7 @@ namespace AyaNova.Biz
//Log modification
EventLogProcessor.LogEventToDatabase(new Event(UserId, dbObj.Id, BizType, AyaEvent.Modified), ct);
//Update keywords
Search.ProcessUpdatedObjectKeywords(ct, UserLocaleId, dbObj.Id, BizType, dbObj.Name, dbObj.Notes, dbObj.Name);

View File

@@ -16,6 +16,7 @@ namespace AyaNova.Models
[Required]
public long OwnerId { get; set; }
public string Name { get; set; }
public uint Serial { get; set; }
public decimal? DollarAmount { get; set; }
public bool? Active { get; set; }
public AuthorizationRoles Roles { get; set; }

View File

@@ -0,0 +1,26 @@
using System;
using System.Threading.Tasks;
namespace AyaNova.Util
{
public class AutoId
{
private readonly object valueLock = new object();
private uint currentValue; //postgre bigint
public AutoId(uint initialValue)
{
currentValue = initialValue;
}
public uint GetNext()
{
lock (valueLock)
{
currentValue += 1;
if (currentValue == 0)
currentValue += 1;
return currentValue;
}
}
}
}

View File

@@ -22,8 +22,8 @@ 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 = 99;
internal const long EXPECTED_INDEX_COUNT = 22;
internal const long EXPECTED_COLUMN_COUNT = 100;
internal const long EXPECTED_INDEX_COUNT = 23;
//!!!!WARNING: BE SURE TO UPDATE THE DbUtil::PrepareDatabaseForSeeding WHEN NEW TABLES ADDED!!!!
@@ -152,7 +152,7 @@ namespace AyaNova.Util
exec("CREATE TABLE alocaleitem (id BIGSERIAL PRIMARY KEY, localeid bigint not null REFERENCES alocale (id), key text not null, display text not null)");
//LOOKAT: this is for what exactly??
// exec("CREATE INDEX alocaleitem_localeid_key_idx ON alocaleitem (localeid,key)");
// exec("CREATE INDEX alocaleitem_localeid_key_idx ON alocaleitem (localeid,key)");
//This seems more appropriate
exec("CREATE INDEX alocaleitem_localeid_key_display_idx ON alocaleitem (localeid,key, display)");
@@ -201,9 +201,13 @@ 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, " +
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, notes text)");
//TEST TEST TEST ONLY FOR DEVELOPMENT TESTING TO ENSURE UNIQUENESS
exec("CREATE UNIQUE INDEX awidget_serial_idx ON awidget (serial);");
//Compound index for name fetching
exec("CREATE UNIQUE INDEX awidget_name_id_idx ON awidget (id, name);");

View File

@@ -30,6 +30,10 @@ namespace AyaNova.Util
ApiServerState.ServerState wasServerState = apiServerState.GetState();
string wasReason = apiServerState.Reason;
//START SERIAL NUMBER GENERATORS
if (ServerBootConfig.WIDGET_SERIAL == null)
ServerBootConfig.WIDGET_SERIAL = new AutoId(0);
try
{
log.LogInformation("SEEDER: Seed data level - " + slevel.ToString());

View File

@@ -12,6 +12,10 @@ namespace AyaNova.Util
internal static class ServerBootConfig
{
//TEST AUTOID
//Get the highest id number issued previously and start the auto-id at that level
internal static AutoId WIDGET_SERIAL { get; set; }
//Diagnostic static values used during development, may not be related to config at all, this is just a convenient class to put them in
#if (DEBUG)