Quellcode durchsuchen

implemented full-text search

BE_dev
Dzenis Hadzifejzovic vor 2 Jahren
Ursprung
Commit
0ddae2e5b6

+ 22
- 3
Diligent.WebAPI.Business/Services/FileEntityService.cs Datei anzeigen

return await _context.Files.ToListAsync(); return await _context.Files.ToListAsync();
} }


public async Task<IEnumerable<FileEntity>> GetAllFilesBasedOnContent(String content)
{
using var connection = new SqlConnection(_configuration.GetConnectionString("WebApi"));

var sql = @"select * from Files inner join DocumentOrganizerDocStore on Files.DocumentId = DocumentOrganizerDocStore.stream_id
where contains(DocumentOrganizerDocStore.file_stream,@content)";

var files = await connection.QueryAsync<FileEntity>(sql,new {content=content});
return files.ToList();
}
public async Task<object> GetAllFiltered(FileFilter filters) public async Task<object> GetAllFiltered(FileFilter filters)
{ {
using var connection = new SqlConnection(_configuration.GetConnectionString("WebApi")); using var connection = new SqlConnection(_configuration.GetConnectionString("WebApi"));
var sql = @"SELECT Files.Id as FileId, stream_id, DocumentOrganizerDocStore.name as FileName, file_stream, file_type, cached_file_size, Title, Tags.Id as TagId, Tags.Name as TagName, Categories.Id as CategoryId, Categories.Name as CategoryName
FROM Files inner join FileEntityTag on Files.Id = FileEntityTag.FilesId
inner join Tags on FileEntityTag.TagsId = Tags.Id
inner join Categories on Files.CategoryId = Categories.Id
inner join DocumentOrganizerDocStore on DocumentOrganizerDocStore.stream_id = Files.DocumentId" +
(filters.Content is null ? "" : $" where contains(DocumentOrganizerDocStore.file_stream,@content);");


var files = await connection.QueryAsync<FileFilterReturnDto, TagResponse, CategoryResponse, FileFilterReturnDto>("SELECT Files.Id as FileId, stream_id, DocumentOrganizerDocStore.name as FileName, file_stream, file_type, cached_file_size, Title, Tags.Id as TagId, Tags.Name as TagName, Categories.Id as CategoryId, Categories.Name as CategoryName FROM Files inner join FileEntityTag on Files.Id = FileEntityTag.FilesId inner join Tags on FileEntityTag.TagsId = Tags.Id inner join DocumentOrganizerDocStore on DocumentOrganizerDocStore.stream_id = Files.DocumentId inner join Categories on Files.CategoryId = Categories.Id;", (file, tag, category) =>
var files = await connection.QueryAsync<FileFilterReturnDto, TagResponse, CategoryResponse, FileFilterReturnDto>(sql,(file, tag, category) =>
{ {
file.Tags.Add(tag); file.Tags.Add(tag);
file.Category = category; file.Category = category;
return file; return file;
}, splitOn: "TagId, CategoryId");
}, splitOn: "TagId, CategoryId",
param:new {content = filters.Content});


var filesList = files.ToList(); var filesList = files.ToList();


var filtered = filesList var filtered = filesList
.FilterFiles(filters);
.FilterFiles(filters)
.DistinctBy(x => x.stream_id).ToList();


return new return new
{ {

+ 1
- 0
Diligent.WebAPI.Business/Services/Interfaces/IFileEntityService.cs Datei anzeigen

Task<List<FileEntityResponse>> GetAllAsync(); Task<List<FileEntityResponse>> GetAllAsync();
Task UploadPdfAsync(FileEntity file); Task UploadPdfAsync(FileEntity file);
Task<IEnumerable<FileEntity>> GetAll(); Task<IEnumerable<FileEntity>> GetAll();
Task<IEnumerable<FileEntity>> GetAllFilesBasedOnContent(string content);
Task<object> GetAllFiltered(FileFilter filters); Task<object> GetAllFiltered(FileFilter filters);
} }
} }

+ 1
- 0
Diligent.WebAPI.Contracts/DTOs/Files/FileFilter.cs Datei anzeigen

public string[]? Extensions { get; set; } public string[]? Extensions { get; set; }
public string[]? Categories { get; set; } public string[]? Categories { get; set; }
public string[]? Tags { get; set; } public string[]? Tags { get; set; }
public string? Content { get; set; }
} }
} }

+ 3
- 0
Diligent.WebAPI.Host/Controllers/V1/FilesController.cs Datei anzeigen

[HttpGet] [HttpGet]
public async Task<IActionResult> GetAll() => Ok(await _fileEntityService.GetAll()); public async Task<IActionResult> GetAll() => Ok(await _fileEntityService.GetAll());


[HttpGet("filterByContent")]
public async Task<IActionResult> GetAllDocumentsByContent(string content) => Ok(await _fileEntityService.GetAllFilesBasedOnContent(content));

[HttpGet("filtered")] [HttpGet("filtered")]
public async Task<IActionResult> GetAllFiltered([FromQuery] FileFilter filters) => Ok(await _fileEntityService.GetAllFiltered(filters)); public async Task<IActionResult> GetAllFiltered([FromQuery] FileFilter filters) => Ok(await _fileEntityService.GetAllFiltered(filters));



+ 1
- 1
Diligent.WebAPI.Host/appsettings.Development.json Datei anzeigen

"Enrich": [ "FromLogContext", "WithMachineName", "WtihThreadId", "WithExceptionDetails" ] "Enrich": [ "FromLogContext", "WithMachineName", "WtihThreadId", "WithExceptionDetails" ]
}, },
"ConnectionStrings": { "ConnectionStrings": {
"WebApi": "Server=192.168.88.105;Database=DiligDocumentOrganizer;User Id=dzenis_hadzifejzovic;Password=;"
"WebApi": "Server=192.168.88.105;Database=DiligDocumentOrganizer;User Id=dzenis_hadzifejzovic;Password=dzenis123!;"
}, },
"Authorization": { "Authorization": {
"JwtExpiredTime": "5", "JwtExpiredTime": "5",

+ 1
- 1
Diligent.WebAPI.Host/appsettings.json Datei anzeigen

"Enrich": [ "FromLogContext", "WithMachineName", "WtihThreadId", "WithExceptionDetails" ] "Enrich": [ "FromLogContext", "WithMachineName", "WtihThreadId", "WithExceptionDetails" ]
}, },
"ConnectionStrings": { "ConnectionStrings": {
"WebApi": "Server=192.168.88.105;Database=DiligDocumentOrganizer;User Id=dzenis_hadzifejzovic;Password=;"
"WebApi": "Server=192.168.88.105;Database=DiligDocumentOrganizer;User Id=dzenis_hadzifejzovic;Password=dzenis123!;"
}, },
"Authorization": { "Authorization": {
"JwtExpiredTime": "5", "JwtExpiredTime": "5",

+ 0
- 0
Diligent.WebAPI.Host/wwwroot/files/fileToUplo232312300.pdf Datei anzeigen


+ 0
- 0
Diligent.WebAPI.Host/wwwroot/files/fileToUplo232338719.pdf Datei anzeigen


+ 2
- 0
Diligent.WebAPI.Host/wwwroot/files/fileToUplo232350216.docx Datei anzeigen

Leather
V6

+ 2
- 0
Diligent.WebAPI.Host/wwwroot/files/fileToUplo232502833.docx Datei anzeigen

Leather
V6

Laden…
Abbrechen
Speichern