=== Summary: 675 files | 7 generated | 484 fresh | 4605 untracked | 4268 adopted | 355 marked | 466 validated-ok | 2+0 stale (sig+body) | 0 skipped | 0 failed | elapsed 11:08:11.442 (40091.44s) ===

This commit is contained in:
julian
2026-06-28 02:50:05 -07:00
parent a19fb90902
commit 586f02a2ca
654 changed files with 5260 additions and 0 deletions
@@ -15,6 +15,7 @@ namespace adas_core.Infrastructure.Repositories;
/// <summary>
/// Repositorio para manejar las operaciones CRUD de ConfigObservation en MongoDB.
/// </summary>
/// <!-- aidoc:v1 sig=a788dff -->
public class ConfigObservationRepository : MongoRepository<ConfigObservation>, IConfigObservationRepository
{
private readonly ApiSettings _apiSettings;
@@ -26,6 +27,7 @@ public class ConfigObservationRepository : MongoRepository<ConfigObservation>, I
/// <param name="apiSettings">Configuración de la API.</param>
/// <param name="database">Instancia de la base de datos MongoDB.</param>
/// <param name="masterListServiceFactory">Fábrica de servicios de lista maestra.</param>
/// <!-- aidoc:v1 sig=da6c2d3 body=58ec731 -->
public ConfigObservationRepository(IOptions<ApiSettings> apiSettings, IMongoDatabase database,
IMasterListServiceFactory masterListServiceFactory) : base(database)
{
@@ -37,6 +39,7 @@ public class ConfigObservationRepository : MongoRepository<ConfigObservation>, I
/// Obtiene el nombre de la colección de MongoDB para ConfigObservation, utilizando la configuración proporcionada o un valor predeterminado.
/// </summary>
/// <returns>El nombre de la colección de MongoDB para ConfigObservation.</returns>
/// <!-- aidoc:v1 sig=94e22ff body=101bc42 -->
public override string GetCollectionName()
{
return _apiSettings.ConfigObservations ?? "config_observations";
@@ -47,6 +50,7 @@ public class ConfigObservationRepository : MongoRepository<ConfigObservation>, I
/// </summary>
/// <param name="id">El ID del ConfigObservation a buscar.</param>
/// <returns>El ConfigObservation encontrado, o null si no se encuentra.</returns>
/// <!-- aidoc:v1 sig=9e9dbe7 body=eb0c8ec -->
public async Task<ConfigObservation?> FindById(ObjectId id)
{
var result = await Collection.FindAsync(Builders<ConfigObservation>.Filter.Eq(x => x.Id, id));
@@ -58,6 +62,8 @@ public class ConfigObservationRepository : MongoRepository<ConfigObservation>, I
/// </summary>
/// <param name="configObservation">El ConfigObservation con los datos actualizados.</param>
/// <returns>El ConfigObservation actualizado, o null si no se encuentra.</returns>
/// <!-- aidoc-review:v1 severity=high kind=wrong_returns
/// "The documentation states it returns null if the document is not found, but the method body unconditionally returns the input configObservation parameter and never returns null." -->
public async Task<ConfigObservation?> Update(ConfigObservation configObservation)
{
await UpdateOneAsync(configObservation.Id, configObservation);
@@ -69,6 +75,7 @@ public class ConfigObservationRepository : MongoRepository<ConfigObservation>, I
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
/// <!-- aidoc:v1 sig=0493ac3 body=040c92d -->
public async Task<ConfigObservation?> Delete(ObjectId id)
{
return await DeleteAsync(id);
@@ -78,6 +85,7 @@ public class ConfigObservationRepository : MongoRepository<ConfigObservation>, I
/// Busca todos los IDs de ConfigObservation en la base de datos MongoDB.
/// </summary>
/// <returns>Una lista de todos los IDs de ConfigObservation.</returns>
/// <!-- aidoc:v1 sig=9552257 body=197e2a4 -->
public async Task<List<ObjectId>> FindAllIds()
{
var allCollection = await Collection.FindAsync(_ => true);
@@ -89,6 +97,7 @@ public class ConfigObservationRepository : MongoRepository<ConfigObservation>, I
/// Busca todos los ConfigObservation en la base de datos MongoDB.
/// </summary>
/// <returns>Una colección de todos los ConfigObservation.</returns>
/// <!-- aidoc:v1 sig=9ac53aa body=abac63b -->
public async Task<ICollection<ConfigObservation>> FindAll()
{
var result = await Collection.FindAsync(_ => true);
@@ -100,6 +109,8 @@ public class ConfigObservationRepository : MongoRepository<ConfigObservation>, I
/// </summary>
/// <param name="id">El ID del ConfigObservation para filtrar los nombres (opcional).</param>
/// <returns>Una lista de nombres de ConfigObservation.</returns>
/// <!-- aidoc-review:v1 severity=medium kind=wrong_param_role
/// "The 'id' parameter is documented as used to filter names, but the code never references it; the MongoDB filter is '_ => true' (all documents)." -->
public async Task<List<string>> GetConfigNames(string id)
{
var allConfigs = await Collection.Find(_ => true).ToListAsync();
@@ -117,6 +128,8 @@ public class ConfigObservationRepository : MongoRepository<ConfigObservation>, I
/// Busca todos los nombres de ConfigObservation en la base de datos MongoDB, eliminando duplicados y espacios en blanco.
/// </summary>
/// <returns></returns>
/// <!-- aidoc-review:v1 severity=medium kind=missing_returns
/// "The <returns> tag is empty and does not describe that the method returns a list of distinct, case-insensitive, trimmed configuration names." -->
public async Task<List<string>> GetConfigNames()
{
var allConfigs = await Collection.Find(_ => true).ToListAsync();
@@ -134,6 +147,7 @@ public class ConfigObservationRepository : MongoRepository<ConfigObservation>, I
/// Cuenta el número total de ConfigObservation en la base de datos MongoDB.
/// </summary>
/// <returns>El número total de ConfigObservation.</returns>
/// <!-- aidoc:v1 sig=acac1a2 body=4039511 -->
public async Task<long> Count()
{
var filter = Builders<ConfigObservation>.Filter.Empty;
@@ -147,6 +161,7 @@ public class ConfigObservationRepository : MongoRepository<ConfigObservation>, I
/// <param name="filter">El filtro de paginación y búsqueda.</param>
/// <returns>Una colección de ConfigObservation que cumple con los criterios de búsqueda y paginación.</returns>
/// <exception cref="BadRequestException">Se lanza cuando el texto de búsqueda es demasiado largo.</exception>
/// <!-- aidoc:v1 sig=bfdfd9c body=7c0d92a -->
public async Task<ICollection<ConfigObservation>> GetPaginatedItems(PaginationFilter filter)
{
var builder = Builders<ConfigObservation>.Filter;
@@ -196,6 +211,7 @@ public class ConfigObservationRepository : MongoRepository<ConfigObservation>, I
/// <param name="name">El nombre del ConfigObservation a buscar.</param>
/// <returns>El ConfigObservation que coincide con el nombre proporcionado, o null si no se encuentra.</returns>
/// <exception cref="BadRequestException">Se lanza cuando el nombre es nulo, vacío o demasiado largo.</exception>
/// <!-- aidoc:v1 sig=dd521a7 body=acfad20 -->
public async Task<ConfigObservation?> FindByName(string name)
{
if (string.IsNullOrWhiteSpace(name))
@@ -222,6 +238,8 @@ public class ConfigObservationRepository : MongoRepository<ConfigObservation>, I
/// <param name="codingSystem">El sistema de codificación del ConfigObservation a buscar.</param>
/// <param name="code">El código del ConfigObservation a buscar.</param>
/// <returns>El ConfigObservation que coincide con el sistema de codificación y código proporcionados, o null si no se encuentra.</returns>
/// <!-- aidoc-review:v1 severity=high kind=wrong_summary
/// "The summary states the search is case-insensitive ('búsqueda insensible a mayúsculas y minúsculas'), but the code uses Builders.Filter.Eq which is a case-sensitive equality match." -->
public async Task<ConfigObservation?> GetByCodeSysAndCode(string? codingSystem, string? code)
{
var builder = Builders<ConfigObservation>.Filter;
@@ -245,6 +263,7 @@ public class ConfigObservationRepository : MongoRepository<ConfigObservation>, I
/// </summary>
/// <param name="configObservationItem">El ConfigObservation a insertar en la base de datos.</param>
/// <returns>El ConfigObservation insertado, incluyendo su ID generado.</returns>
/// <!-- aidoc:v1 sig=0a96f47 body=ed8eb4c -->
public async Task<ConfigObservation> InsertOneAsyncAndReturn(ConfigObservation configObservationItem)
{
await Collection.InsertOneAsync(configObservationItem);
@@ -257,6 +276,8 @@ public class ConfigObservationRepository : MongoRepository<ConfigObservation>, I
/// </summary>
/// <param name="name">El nombre del ConfigObservation a buscar.</param>
/// <returns>Una lista de ConfigObservation que coinciden con el nombre proporcionado.</returns>
/// <!-- aidoc-review:v1 severity=high kind=wrong_summary
/// "Summary claims a case-insensitive search ('insensible a mayúsculas y minúsculas'), but the code uses Builders.Eq which performs a case-sensitive equality match in MongoDB." -->
public async Task<List<ConfigObservation>> FindAllByName(string name)
{
var builder = Builders<ConfigObservation>.Filter;
@@ -279,6 +300,8 @@ public class ConfigObservationRepository : MongoRepository<ConfigObservation>, I
/// <param name="name">El nombre del ConfigObservation a buscar.</param>
/// <param name="originalName">El nombre original del ConfigObservation a buscar.</param>
/// <returns>El ConfigObservation que coincide con los parámetros proporcionados, o null si no se encuentra.</returns>
/// <!-- aidoc-review:v1 severity=high kind=wrong_summary
/// "Summary claims the search is case-insensitive ('búsqueda insensible a mayúsculas y minúsculas'), but the code uses Builders<>.Eq which performs a case-sensitive equality match with no case-insensitive collation or regex." -->
public async Task<ConfigObservation?> GetSingleConfigObservationItem(string? code, string? codingSystem,
string? name, string? originalName)
{
@@ -301,6 +324,7 @@ public class ConfigObservationRepository : MongoRepository<ConfigObservation>, I
/// Si ya existen ConfigObservation en la base de datos, solo se insertan aquellos que faltan en comparación con la lista maestra.
/// </summary>
/// <returns></returns>
/// <!-- aidoc:v1 sig=ccdefcf body=2d99abd -->
public sealed override async Task InsertInitialLoad()
{
var stringNurseObs = _masterListServiceFactory.StringNurseObs();