using ChatApi; using ChatRAG.Models; using ChatRAG.Settings.ChatRAG.Configuration; using Microsoft.Extensions.Options; using MongoDB.Bson; using MongoDB.Driver; namespace ChatRAG.Data { public class TextDataRepository { private readonly IMongoCollection _textsCollection; public TextDataRepository( IOptions vectorStoreDatabaseSettings) { var mongoClient = new MongoClient( vectorStoreDatabaseSettings.Value.MongoDB.ConnectionString); var mongoDatabase = mongoClient.GetDatabase( vectorStoreDatabaseSettings.Value.MongoDB.DatabaseName); _textsCollection = mongoDatabase.GetCollection( vectorStoreDatabaseSettings.Value.MongoDB.TextCollectionName); } public IMongoCollection GetCollection() { return _textsCollection; } public async Task> GetAsync() => await _textsCollection.Find(_ => true).ToListAsync(); public async Task> GetByProjectIdAsync(string projectId) => await _textsCollection.Find(s => s.ProjetoId == projectId).ToListAsync(); public async Task GetAsync(string id) => await _textsCollection.Find(x => x.Id == id).FirstOrDefaultAsync(); public async Task CreateAsync(TextoComEmbedding newBook) => await _textsCollection.InsertOneAsync(newBook); public async Task UpdateAsync(string id, TextoComEmbedding updatedBook) => await _textsCollection.ReplaceOneAsync(x => x.Id == id, updatedBook); public async Task RemoveAsync(string id) => await _textsCollection.DeleteOneAsync(x => x.Id == id); } }