/// <inheritdoc/>
        public async Task <Guid> StartReindexingInstancesAsync(IReadOnlyCollection <int> tagKeys, CancellationToken cancellationToken = default)
        {
            EnsureArg.IsNotNull(tagKeys, nameof(tagKeys));
            EnsureArg.HasItems(tagKeys, nameof(tagKeys));

            // Start the re-indexing orchestration
            Guid instanceGuid = _guidFactory.Create();

            // TODO: Pass token when supported
            string instanceId = await _durableClient.StartNewAsync(
                FunctionNames.ReindexInstances,
                OperationId.ToString(instanceGuid),
                new ReindexInput { QueryTagKeys = tagKeys });

            _logger.LogInformation("Successfully started new orchestration instance with ID '{InstanceId}'.", instanceId);

            // Associate the tags to the operation and confirm their processing
            IReadOnlyList <ExtendedQueryTagStoreEntry> confirmedTags = await _extendedQueryTagStore.AssignReindexingOperationAsync(
                tagKeys,
                instanceGuid,
                returnIfCompleted : true,
                cancellationToken : cancellationToken);

            return(confirmedTags.Count > 0 ? instanceGuid : throw new ExtendedQueryTagsAlreadyExistsException());
        }
        public void Register(string login, string password)
        {
            var passwordHash = passwordHasher.Hash(password);
            var userId       = guidFactory.Create();
            var userEntity   = userEntityFactory.Create(login, userId, passwordHash);

            userRepository.Create(userEntity);
        }
示例#3
0
        private DbTask CreateDbTask(TaskDomain task)
        {
            var dbTask = new DbTask
            {
                Id        = _guidFactory.Create(),
                AddedDate = _dateTimeProvider.Now
            };

            MapTaskToDb(dbTask, task);
            return(dbTask);
        }
 /// <summary>
 /// Creates a new GUID.
 /// </summary>
 /// <returns>Generated GUID.</returns>
 public static Guid Create()
 {
     return(_instance.Create());
 }
 public MockedGuidAbstraction()
 {
     guidFactory.Create().Returns(Guid.Parse("89b2c2bc-b296-4ab4-a057-b6add1e37138"));
 }
        private string GenerateCommandOptions(ProjectEntity project, Dictionary <Entity, VirtualFile> projectLibraries, string projectName)
        {
            FileEntity       projectFileEntity  = FileEntity.Decorate(project);
            VirtualFile      commandOptions     = projectFileEntity.TempDirectory.File("CommandOptions.txt");
            CommandEntity    commandOrigin      = CommandEntity.Decorate(project.Origin);
            VirtualDirectory outputRoot         = fileSystem.GetDirectory(commandOrigin.Output, project.Path, false);
            List <string>    processedMetaFiles = new List <string>();

            executionContext.Observable.OnNext(new Change(() => { }, $"Create command options file {commandOptions.FullName}"));

            using (Stream stream = commandOptions.OpenWrite())
                using (StreamWriter writer = new StreamWriter(stream))
                {
                    writer.WriteLine($"{Constants.OutputOption} \"{MakeRelative(Path.Combine(outputRoot.FullName, projectName))}.{Constants.EngineeringLibraryExtension}\"");
                    writer.WriteLine($"{Constants.GuidOption} {project.Id:D}");

                    RenameAndWriteLibraryFile(writer);
                    WriteMetadata(writer);
                    AddAdditionalFiles(writer);
                }

            return(commandOptions.FullName);

            void RenameAndWriteLibraryFile(StreamWriter writer)
            {
                foreach (TargetEntity target in projectLibraries.Keys.Select(TargetEntity.Decorate))
                {
                    VirtualFile renamedLibrary = projectFileEntity
                                                 .TempDirectory.Directory(target.FullName.Replace(",", "_"))
                                                 .File("lib" + projectName +
                                                       Path.GetExtension(projectLibraries[target.Base].Name));
                    executionContext.Observable.OnNext(new Change(() => { }, $"Rename library file to {renamedLibrary.FullName}"));
                    using (Stream source = projectLibraries[target.Base].OpenRead(true))
                        using (Stream destination = renamedLibrary.OpenWrite())
                        {
                            source.CopyTo(destination);
                        }
                    writer.WriteLine(string.Format(CultureInfo.InvariantCulture,
                                                   Constants.PlcnextNativeLibraryOptionPattern,
                                                   renamedLibrary.Parent.FullName,
                                                   target.Name,
                                                   target.EngineerVersion,
                                                   guidFactory.Create().ToString("D", CultureInfo.InvariantCulture),
                                                   target.ShortFullName.Replace(",", "_")));
                }
            }

            void AddAdditionalFiles(StreamWriter writer)
            {
                foreach (Entity target in projectLibraries.Keys)
                {
                    VirtualDirectory          deployDirectory = DeployEntity.Decorate(target).DeployDirectory;
                    IEnumerable <VirtualFile> files           = deployDirectory
                                                                .Files(searchRecursive: true).Except(projectLibraries.Values)
                                                                .Where(f => !processedMetaFiles.Contains(f.GetRelativePath(deployDirectory)));
                    foreach (VirtualFile file in files)
                    {
                        writer.WriteLine(string.Format(CultureInfo.InvariantCulture,
                                                       "/file \":{0}:{1}\"",
                                                       file.GetRelativeOrAbsolutePath(projectFileEntity.Directory),
                                                       TargetEntity.Decorate(target).ShortFullName.Replace(",", "_")));
                    }
                }
            }

            void WriteMetadata(StreamWriter writer)
            {
                VirtualDirectory           deployDirectory   = DeployEntity.Decorate(projectLibraries.Keys.First()).DeployDirectory;
                HashSet <VirtualDirectory> createDirectories = new HashSet <VirtualDirectory>();

                foreach (VirtualFile metaFile in deployDirectory.Files(searchRecursive: true))
                {
                    string destinationPath;
                    string fileType;
                    switch (Path.GetExtension(metaFile.Name)?.ToUpperInvariant() ?? string.Empty)
                    {
                    case ".LIBMETA":
                        destinationPath = string.Empty;
                        fileType        = Constants.LibmetaFileType;
                        break;

                    case ".TYPEMETA":
                        destinationPath = string.Empty;
                        fileType        = Constants.TypemetaFileType;
                        break;

                    case ".COMPMETA":
                        CreateComponentDirectory(metaFile.Parent);
                        destinationPath = metaFile.Parent.Name;
                        fileType        = Constants.CompmetaFileType;
                        break;

                    case ".PROGMETA":
                        CreateProgramDirectory(metaFile.Parent);
                        destinationPath = $"{metaFile.Parent.Parent.Name}/{metaFile.Parent.Name}";
                        fileType        = Constants.ProgmetaFileType;
                        break;

                    default:
                        //do nothing all other files are not interesting
                        continue;
                    }
                    writer.WriteLine(string.Format(CultureInfo.InvariantCulture,
                                                   Constants.FileOptionPattern,
                                                   fileType,
                                                   MakeRelative(metaFile.FullName),
                                                   guidFactory.Create().ToString("D", CultureInfo.InvariantCulture),
                                                   destinationPath));
                    processedMetaFiles.Add(metaFile.GetRelativePath(deployDirectory));
                }

                void CreateComponentDirectory(VirtualDirectory componentDirectory)
                {
                    if (createDirectories.Contains(componentDirectory))
                    {
                        return;
                    }

                    writer.WriteLine(string.Format(CultureInfo.InvariantCulture,
                                                   Constants.DirectoryOptionPattern,
                                                   $"Logical Elements/{componentDirectory.Name}",
                                                   Constants.ComponentFolderType,
                                                   guidFactory.Create().ToString("D", CultureInfo.InvariantCulture)));
                    createDirectories.Add(componentDirectory);
                }

                void CreateProgramDirectory(VirtualDirectory programDirectory)
                {
                    if (createDirectories.Contains(programDirectory))
                    {
                        return;
                    }

                    CreateComponentDirectory(programDirectory.Parent);
                    writer.WriteLine(string.Format(CultureInfo.InvariantCulture,
                                                   Constants.DirectoryOptionPattern,
                                                   $"Logical Elements/{programDirectory.Parent.Name}/{programDirectory.Name}",
                                                   Constants.ProgramFolderType,
                                                   guidFactory.Create().ToString("D", CultureInfo.InvariantCulture)));
                    createDirectories.Add(programDirectory);
                }
            }

            string MakeRelative(string path)
            {
                return(path.GetRelativePath(projectFileEntity.Directory.FullName));
            }
        }
示例#7
0
 public IActionResult Privacy()
 {
     return(View((object)guidFactory.Create().ToString()));
 }