using Microsoft.EntityFrameworkCore; namespace Admin.NET.Plugin.HwPortal; public sealed class HwSearchRebuildService : IHwSearchRebuildService, ITransient { private readonly HwPortalSearchDbContext _db; private readonly IHwSearchSchemaService _schemaService; private readonly IHwSearchIndexService _indexService; private readonly HwWebMenuService _menuService; private readonly HwWebService _webService; private readonly HwWeb1Service _web1Service; private readonly HwWebDocumentService _documentService; private readonly HwPortalConfigTypeService _configTypeService; public HwSearchRebuildService( HwPortalSearchDbContext db, IHwSearchSchemaService schemaService, IHwSearchIndexService indexService, HwWebMenuService menuService, HwWebService webService, HwWeb1Service web1Service, HwWebDocumentService documentService, HwPortalConfigTypeService configTypeService) { _db = db; _schemaService = schemaService; _indexService = indexService; _menuService = menuService; _webService = webService; _web1Service = web1Service; _documentService = documentService; _configTypeService = configTypeService; } public async Task RebuildAllAsync() { await _schemaService.EnsureCreatedAsync(); await _db.Database.ExecuteSqlRawAsync("DELETE FROM `hw_portal_search_doc`;"); foreach (HwWebMenu item in await _menuService.SelectHwWebMenuList(new HwWebMenu())) { await _indexService.UpsertMenuAsync(item); } foreach (HwWeb item in await _webService.SelectHwWebList(new HwWeb())) { await _indexService.UpsertWebAsync(item); } foreach (HwWeb1 item in await _web1Service.SelectHwWebList(new HwWeb1())) { await _indexService.UpsertWeb1Async(item); } foreach (HwWebDocument item in await _documentService.SelectHwWebDocumentList(new HwWebDocument())) { await _indexService.UpsertDocumentAsync(item); } foreach (HwPortalConfigType item in await _configTypeService.SelectHwPortalConfigTypeList(new HwPortalConfigType())) { await _indexService.UpsertConfigTypeAsync(item); } } }