Class MongoAdminServiceImpl

java.lang.Object
br.com.vantroba.bi.transporte.powersync.MongoAdminServiceImpl
All Implemented Interfaces:
MongoAdminService

@Singleton @Requires(property="powersync.mongodb.uri", pattern=".+") public class MongoAdminServiceImpl extends Object implements MongoAdminService
Implementação real de MongoAdminService usando mongodb-driver-sync.

Ativa quando powersync.mongodb.uri está set (não-vazio). Quando vazio, o MongoAdminServiceStub assume — reset continua executável em dev sem Mongo.

Pool de MongoClient: 1 instância por URI distinta, reutilizada entre resets. Cliente é thread-safe e mantém connection pool interno. Fechamento em shutdown().

  • Constructor Details

    • MongoAdminServiceImpl

      public MongoAdminServiceImpl()
      Construtor padrão.
  • Method Details

    • databaseSizeBytes

      public long databaseSizeBytes(String uri, String dbName)
      Description copied from interface: MongoAdminService
      Tamanho em bytes do database (via dbStats.dataSize).
      Specified by:
      databaseSizeBytes in interface MongoAdminService
      Parameters:
      uri - connection string MongoDB (vazia → 0)
      dbName - nome do database
      Returns:
      bytes; 0 se URI ausente
    • dropDatabase

      public String dropDatabase(String uri, String dbName)
      Description copied from interface: MongoAdminService
      Dropa o database. Operação irreversível.
      Specified by:
      dropDatabase in interface MongoAdminService
      Parameters:
      uri - connection string MongoDB
      dbName - nome do database a ser dropado
      Returns:
      nome do database dropado (mesmo recebido), para gravar em audit
    • detectActiveSlotName

      public String detectActiveSlotName(String uri, String dbName)
      Description copied from interface: MongoAdminService
      Descobre o slot_name ativo lendo a metadata do PowerSync no próprio Mongo (collection sync_rules, doc com state='ACTIVE' e maior _id).

      Permite que o reset seja chamado sem hardcodar POWERSYNC_SLOT — o pareamento Mongo↔slot é descoberto em runtime, evitando confusão em PGs com múltiplos slots de PR builds e ambientes simultâneos.

      Specified by:
      detectActiveSlotName in interface MongoAdminService
      Parameters:
      uri - connection string MongoDB
      dbName - nome do database onde está a metadata do PowerSync
      Returns:
      nome do slot atual; nunca null — se não houver doc ACTIVE, lança.
    • countBucketData

      public long countBucketData(String uri, String dbName)
      Description copied from interface: MongoAdminService
      Conta os documentos da collection bucket_data — o histórico de operações acumulado do PowerSync, métrica de "checkpoints" antes/depois do reset.
      Specified by:
      countBucketData in interface MongoAdminService
      Parameters:
      uri - connection string MongoDB (vazia → 0)
      dbName - nome do database
      Returns:
      número de documentos; 0 se URI ausente ou collection inexistente