コード例 #1
0
        public SQLitePersistentStorage(
            string workingFolderPath,
            string solutionFilePath,
            string databaseFile,
            IDisposable dbOwnershipLock,
            IPersistentStorageFaultInjector faultInjectorOpt)
            : base(workingFolderPath, solutionFilePath, databaseFile)
        {
            _dbOwnershipLock  = dbOwnershipLock;
            _faultInjectorOpt = faultInjectorOpt;

            _solutionAccessor = new SolutionAccessor(this);
            _projectAccessor  = new ProjectAccessor(this);
            _documentAccessor = new DocumentAccessor(this);

            _select_star_from_string_table     = $@"select * from {StringInfoTableName}";
            _insert_into_string_table_values_0 = $@"insert into {StringInfoTableName}(""{DataColumnName}"") values (?)";
            _select_star_from_string_table_where_0_limit_one = $@"select * from {StringInfoTableName} where (""{DataColumnName}"" = ?) limit 1";

            // Create a queue to batch up requests to flush.  We'll won't flush more than every FlushAllDelayMS. The
            // actual information in the queue isn't relevant, so we pass in an equality comparer to just keep it down
            // to storing a single piece of data.
            _flushQueue = new AsyncBatchingWorkQueue <bool>(
                TimeSpan.FromMilliseconds(FlushAllDelayMS),
                FlushInMemoryDataToDiskIfNotShutdownAsync,
                EqualityComparer <bool> .Default,
                asyncListener: null,
                _shutdownTokenSource.Token);
        }
コード例 #2
0
        public SQLitePersistentStorage(
            string workingFolderPath,
            string solutionFilePath,
            string databaseFile,
            IDisposable dbOwnershipLock,
            IPersistentStorageFaultInjector?faultInjectorOpt)
            : base(workingFolderPath, solutionFilePath, databaseFile)
        {
            _dbOwnershipLock  = dbOwnershipLock;
            _faultInjectorOpt = faultInjectorOpt;

            _solutionAccessor = new SolutionAccessor(this);
            _projectAccessor  = new ProjectAccessor(this);
            _documentAccessor = new DocumentAccessor(this);

            _select_star_from_string_table     = $@"select * from {StringInfoTableName}";
            _insert_into_string_table_values_0 = $@"insert into {StringInfoTableName}(""{DataColumnName}"") values (?)";
            _select_star_from_string_table_where_0_limit_one = $@"select * from {StringInfoTableName} where (""{DataColumnName}"" = ?) limit 1";

            // Create a delay to batch up requests to flush.  We'll won't flush more than every FlushAllDelayMS.
            _flushQueue = new AsyncBatchingDelay(
                TimeSpan.FromMilliseconds(FlushAllDelayMS),
                FlushInMemoryDataToDiskIfNotShutdownAsync,
                asyncListener: null,
                _shutdownTokenSource.Token);
        }
コード例 #3
0
        public IQueryable <SolutionVO> GetAll()
        {
            IQueryable <SolutionVO> qSolution;

            using (var solutionAccessor = new SolutionAccessor())
            {
                qSolution = solutionAccessor.Repo.All;
            }
            return(qSolution);
        }
コード例 #4
0
        public List <SolutionVO> FindAll()
        {
            List <SolutionVO> catList;

            using (var solutionAccessor = new SolutionAccessor())
            {
                catList = solutionAccessor.Repo.All.ToList();
            }
            return(catList);
        }
コード例 #5
0
        public async Task <Unit> Handle(DeleteEntity request, CancellationToken cancellationToken)
        {
            var solution = await _solutionRepository.GetEntities()
                           .Where(e => e.Id == request.SolutionId)
                           .FirstOrDefaultAsync();

            var solutionAccessor = new SolutionAccessor(solution.Path);
            await solutionAccessor.DeleteEntityAsync(request.Id);

            return(Unit.Value);
        }
コード例 #6
0
 public SQLitePersistentStorage(
     IOptionService optionService,
     string workingFolderPath,
     string solutionFilePath,
     string databaseFile,
     Action <AbstractPersistentStorage> disposer)
     : base(optionService, workingFolderPath, solutionFilePath, databaseFile, disposer)
 {
     _solutionAccessor = new SolutionAccessor(this);
     _projectAccessor  = new ProjectAccessor(this);
     _documentAccessor = new DocumentAccessor(this);
 }
コード例 #7
0
        public async Task <EntityModel> Handle(GetEntity request, CancellationToken cancellationToken)
        {
            var solution = await _solutionRepository.GetEntities()
                           .Where(e => e.Id == request.SolutionId)
                           .FirstOrDefaultAsync();

            var solutionAccessor = new SolutionAccessor(solution.Path);
            var entities         = await solutionAccessor.GetEntitiesAsync();

            var entity = entities.FirstOrDefault(e => e.Id == request.Id);

            return(_mapper.Map <Generator.Models.Entity, EntityModel>(entity));
        }
コード例 #8
0
        public async Task <Unit> Handle(GenerateEnum request, CancellationToken cancellationToken)
        {
            var solution = await _solutionRepository.GetEntities()
                           .Where(e => e.Id == request.SolutionId)
                           .FirstOrDefaultAsync();

            var solutionAccessor = new SolutionAccessor(solution.Path);
            var @enum            = (await solutionAccessor.GetEnumsAsync()).FirstOrDefault(e => e.Id == request.Id);
            await _codeGenerator.GenerateEnumAsync(solutionAccessor, @enum);

            await _codeGenerator.GenerateEnumViewAsync(solutionAccessor, new Generator.Models.View(), @enum);

            return(Unit.Value);
        }
コード例 #9
0
        public SQLitePersistentStorage(
            string workingFolderPath,
            string solutionFilePath,
            string databaseFile,
            IDisposable dbOwnershipLock,
            IPersistentStorageFaultInjector faultInjectorOpt)
            : base(workingFolderPath, solutionFilePath, databaseFile)
        {
            _dbOwnershipLock  = dbOwnershipLock;
            _faultInjectorOpt = faultInjectorOpt;

            _solutionAccessor = new SolutionAccessor(this);
            _projectAccessor  = new ProjectAccessor(this);
            _documentAccessor = new DocumentAccessor(this);
        }
コード例 #10
0
        public SQLitePersistentStorage(
            IOptionService optionService,
            string workingFolderPath,
            string solutionFilePath,
            string databaseFile,
            Action <AbstractPersistentStorage> disposer,
            IDisposable dbOwnershipLock,
            IPersistentStorageFaultInjector faultInjectorOpt)
            : base(optionService, workingFolderPath, solutionFilePath, databaseFile, disposer)
        {
            _dbOwnershipLock  = dbOwnershipLock;
            _faultInjectorOpt = faultInjectorOpt;

            _solutionAccessor = new SolutionAccessor(this);
            _projectAccessor  = new ProjectAccessor(this);
            _documentAccessor = new DocumentAccessor(this);
        }
コード例 #11
0
        public async Task <PageModel <EnumModel> > Handle(GetEnums request, CancellationToken cancellationToken)
        {
            var solution = await _solutionRepository.GetEntities()
                           .Where(e => e.Id == request.SolutionId)
                           .FirstOrDefaultAsync();

            var solutionAccessor = new SolutionAccessor(solution.Path);
            var enums            = await solutionAccessor.GetEnumsAsync();

            if (!string.IsNullOrEmpty(request.Filter?.Text))
            {
                enums = enums.Where(e => e.Name.Contains(request.Filter.Text, StringComparison.CurrentCultureIgnoreCase) ||
                                    e.DisplayName.Contains(request.Filter.Text, StringComparison.CurrentCultureIgnoreCase)).ToList();
            }
            return(enums.ToPagedList(request.PageIndex, request.PageSize)
                   .Map <Generator.Models.Enum, EnumModel>(_mapper));
        }
コード例 #12
0
        public SQLitePersistentStorage(
            string workingFolderPath,
            string solutionFilePath,
            string databaseFile,
            IDisposable dbOwnershipLock,
            IPersistentStorageFaultInjector faultInjectorOpt)
            : base(workingFolderPath, solutionFilePath, databaseFile)
        {
            _dbOwnershipLock  = dbOwnershipLock;
            _faultInjectorOpt = faultInjectorOpt;

            _solutionAccessor = new SolutionAccessor(this);
            _projectAccessor  = new ProjectAccessor(this);
            _documentAccessor = new DocumentAccessor(this);

            _select_star_from_0     = $@"select * from ""{StringInfoTableName}""";
            _insert_into_0_1_values = $@"insert into ""{StringInfoTableName}""(""{DataColumnName}"") values (?)";
            _select_star_from_0_where_1_limit_one = $@"select * from ""{StringInfoTableName}"" where (""{DataColumnName}"" = ?) limit 1";
        }
コード例 #13
0
        public async Task <Unit> Handle(UpdateEntity request, CancellationToken cancellationToken)
        {
            var solution = await _solutionRepository.GetEntities()
                           .Where(e => e.Id == request.SolutionId)
                           .FirstOrDefaultAsync();

            var solutionAccessor = new SolutionAccessor(solution.Path);
            var newEntity        = _mapper.Map <UpdateEntity, Generator.Models.Entity>(request);
            var oldEntity        = (await solutionAccessor.GetEntitiesAsync()).FirstOrDefault(e => e.Id == request.Id);
            await solutionAccessor.UpdateEntityAsync(newEntity);

            // reload Entity from Solution
            newEntity = (await solutionAccessor.GetEntitiesAsync())
                        .FirstOrDefault(e => e.Id == request.Id);
            await _codeGenerator.UpgradeEntityAsync(solutionAccessor, oldEntity, newEntity);

            await _codeGenerator.UpgradeViewAsync(solutionAccessor, new Generator.Models.View(), oldEntity, newEntity);

            return(Unit.Value);
        }
コード例 #14
0
        public async Task <Guid> Handle(CreateEntity request, CancellationToken cancellationToken)
        {
            var solution = await _solutionRepository.GetEntities()
                           .Where(e => e.Id == request.SolutionId)
                           .FirstOrDefaultAsync();

            var solutionAccessor = new SolutionAccessor(solution.Path);
            var entity           = _mapper.Map <CreateEntity, Generator.Models.Entity>(request);

            entity.Id = Guid.NewGuid();
            await solutionAccessor.CreateEntityAsync(entity);

            // reload Entity from Solution
            entity = (await solutionAccessor.GetEntitiesAsync())
                     .First(e => e.Id == entity.Id);
            await _codeGenerator.GenerateEntityAsync(solutionAccessor, entity);

            await _codeGenerator.GenerateViewAsync(solutionAccessor, new Generator.Models.View(), entity);

            return(entity.Id);
        }
コード例 #15
0
        public async Task <Guid> Handle(CreateEnum request, CancellationToken cancellationToken)
        {
            var solution = await _solutionRepository.GetEntities()
                           .Where(e => e.Id == request.SolutionId)
                           .FirstOrDefaultAsync();

            var solutionAccessor = new SolutionAccessor(solution.Path);
            var @enum            = _mapper.Map <CreateEnum, Generator.Models.Enum>(request);

            @enum.Id = Guid.NewGuid();
            await solutionAccessor.CreateEnumAsync(@enum);

            // reload Enum from Solution
            @enum = (await solutionAccessor.GetEnumsAsync())
                    .First(e => e.Id == @enum.Id);
            await _codeGenerator.GenerateEnumAsync(solutionAccessor, @enum);

            await _codeGenerator.GenerateEnumViewAsync(solutionAccessor, new Generator.Models.View(), @enum);

            return(@enum.Id);
        }
コード例 #16
0
 public SolutionBL()
 {
     _solutionAccessor = new SolutionAccessor();
 }