KnowledgeService.cs 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. using Google.Protobuf;
  2. using Grpc.Core;
  3. using Grpc.Extension.Abstract;
  4. using Microsoft.AspNetCore.Authorization;
  5. using System;
  6. using System.Collections.Concurrent;
  7. using System.Collections.Generic;
  8. using System.Linq;
  9. using System.Threading.Tasks;
  10. using TEAMModelGrpc.Models;
  11. using TEAMModelOS.SDK.Helper.Common.JsonHelper;
  12. using TEAMModelOS.SDK.Module.AzureCosmosDBV3;
  13. using TEAMModelOS.Service.Models.Syllabus;
  14. using TEAMModelOS.Service.Services.Syllabus.Interface;
  15. namespace TEAMModelGrpc.Services
  16. {
  17. /// <summary>
  18. ///
  19. /// </summary>
  20. public class KnowledgeService : IGrpcService
  21. {
  22. private IAzureCosmosDBV3Repository cosmosDBV3Repository;
  23. private IKnowledgeService knowledgeService;
  24. public KnowledgeService(IAzureCosmosDBV3Repository cosmosDBV3Repository, IKnowledgeService knowledgeService)
  25. {
  26. this.cosmosDBV3Repository = cosmosDBV3Repository;
  27. this.knowledgeService = knowledgeService;
  28. }
  29. [Authorize]
  30. public async Task FinKnowledge(Dict request, IServerStreamWriter<Knowledge> responseStream, ServerCallContext context)
  31. {
  32. Dictionary<string, object> keyValuePairs = new Dictionary<string, object>();
  33. keyValuePairs = request.ToDict();
  34. List<Knowledge> knowledges = await cosmosDBV3Repository.FindByDict<Knowledge>(keyValuePairs);
  35. knowledges.ForEach(x =>
  36. {
  37. responseStream.WriteAsync(x);
  38. });
  39. }
  40. [Authorize]
  41. public async Task SaveKnowledge(IAsyncStreamReader<Knowledge> requestStream, IServerStreamWriter<Knowledge> responseStream, ServerCallContext context)
  42. {
  43. //Dictionary<string, object> keyValuePairs = new Dictionary<string, object>();
  44. //keyValuePairs = request.ToDict();
  45. List<Knowledge> knowledges = new List<Knowledge>();
  46. await foreach (var message in requestStream.ReadAllAsync())
  47. {
  48. knowledges.Add(message);
  49. }
  50. await knowledgeService.SaveOrUpdateKnowledge(knowledges);
  51. knowledges.ForEach(x =>
  52. {
  53. responseStream.WriteAsync(x);
  54. });
  55. }
  56. public async Task<ListPid> DeleteKnowledge(ListPid listPid, ServerCallContext context)
  57. {
  58. List<IdPk> idPks = await cosmosDBV3Repository.DeleteAll<Knowledge>(listPid.ids);
  59. listPid.idPks = idPks;
  60. return listPid;
  61. }
  62. }
  63. }