Catalog · How the catalog works
KAFSMongoAPI
Servidor DataSnap integrado com MongoDB Atlas para persistência de dados. Oferece endpoints RESTful para operações básicas de banco de dados.
- ★ 1 on GitHub
Anyone may press Interesting, signed in or not. It helps others find this project.
README

KAFS Mongo API
Servidor DataSnap integrado com MongoDB Atlas para persistência de dados.
Oferece endpoints RESTful para operações básicas de banco de dados.
) )
)
⚠️ Dependências externas
*Componente utilizado nos exemplos de consumo no cliente. Não é necessário para compilar este projeto servidor.
🪟 Executar no Windows
KAFSMongoDBAPI.exe -p porta -u usuario_mongodbatlas -s senha_mongodbatlas -h servidor_mongodbatlas -c resfriamento_em_milisegundos_mongodbatlasou somente
KAFSMongoDBAPI.exe🐧 Executar no Linux
chmod +x KAFSMongoDBAPI
./KAFSMongoDBAPI -p porta -u usuario_mongodbatlas -s senha_mongodbatlas -h servidor_mongodbatlas -c resfriamento_em_milisegundos_mongodbatlasou somente
chmod +x KAFSMongoDBAPI
./KAFSMongoDBAPI*(-c "tempo_em_milisegundos") Todas as requisições respeitarão uma fila e um tempo determinado antes de serem executadas. Isso evita estouro de condições de planos do MongoDB Atlas.
*(-c 0) Caso determine como ZERO, não será montada fila e todas as requisições serão executadas livremente em tempo real.
*O sistema também pode ser executado sem determinar nenhuma configuração, neste caso as configurações serão requisitadas internamente na primeira execução.
⚡ Método - Ping
function TServerMethods.Ping: Boolean;🏛️ Exemplo de consumo no cliente:
var ServidorAtivo := ServerMethods.Ping;
if ServidorAtivo then
ShowMessage('Servidor respondendo corretamente')
else
ShowMessage('Servidor indisponível');⚡ Método - Timer
function TServerMethods.Timer: Int64;🏛️ Exemplo de consumo no cliente:
var TimestampServidor := ServerMethods.Timer;
ShowMessage('Timestamp do servidor: ' + IntToStr(TimestampServidor));⚡ Método - Inserir dados
procedure TServerMethods.InserirDadosMongoDB(const _base, _colecao: String; const _dados: TJSONArray);🏛️ Exemplo de consumo no cliente:
var _dadosinserir := TJSONArray.Create;
var _novousuario: TJSONObject;
try
// Primeiro documento
_novousuario := TJSONObject.Create;
_novousuario.AddPair('nome', 'João Silva');
_novousuario.AddPair('email', 'joao@empresa.com');
_novousuario.AddPair('data_nascimento', TJSONNumber.Create(831456000)); // Unix: 01/05/1996
_novousuario.AddPair('departamento', 'TI');
_novousuario.AddPair('salario', TJSONNumber.Create(4500.00));
_novousuario.AddPair('ativo', TJSONBool.Create(True));
_dadosinserir.AddElement(_novousuario);
// Segundo documento
_novousuario := TJSONObject.Create;
_novousuario.AddPair('nome', 'Maria Santos');
_novousuario.AddPair('email', 'maria@empresa.com');
_novousuario.AddPair('data_nascimento', TJSONNumber.Create(713808000)); // Unix: 15/08/1992
_novousuario.AddPair('departamento', 'TI');
_novousuario.AddPair('salario', TJSONNumber.Create(5200.00));
_novousuario.AddPair('ativo', TJSONBool.Create(True));
_dadosinserir.AddElement(_novousuario);
// Adicione quantos documentos forem necessários...
// Executa inserção
ServerMethods.InserirDadosMongoDB('nome_base', 'nome_coleção', _dadosinserir);
ShowMessage('Dados inseridos com sucesso!');
finally
FreeAndNil(_dadosinserir);
end;⚡ Método - Editar dados
procedure TServerMethods.EditarDadosMongoDB(const _base, _colecao, _filtros: String; const _dados: TJSONArray);🏛️ Exemplo de consumo no cliente:
var _filtros := '{"$and": [{"departamento": "TI"}, {"data_nascimento": {"$lte": 788918400}}]}'; // Nascidos antes de 1995
var _dadosatualizar := TJSONArray.Create;
var _camposatualizar: TJSONObject;
try
_camposAtualizar := TJSONObject.Create;
_camposAtualizar.AddPair('salario', TJSONNumber.Create(5500.00));
_camposAtualizar.AddPair('nivel', 'Sênior');
_camposAtualizar.AddPair('ultima_promocao', FormatDateTime('yyyy-mm-dd', Now));
_dadosatualizar.AddElement(_camposatualizar);
// Adicione quantos documentos forem necessários...
// Executa edição
ServerMethods.EditarDadosMongoDB('nome_base', 'nome_coleção', _filtros, _dadosatualizar);
ShowMessage('Dados editados com sucesso!');
finally
FreeAndNil(_dadosatualizar);
end;⚡ Método - Buscar dados
function TServerMethods.BuscarDadosMongoDB(const _base, _colecao, _filtros, _projecoes: String): TJSONArray;🏛️ Exemplo de consumo no cliente:
var _resultados: TJSONArray;
var _filtros := '{"departamento": "TI"}';
var _projecoes := '{"nome": 1, "email": 1, "data_nascimento": 1, "salario": 1, "nivel": 1, "_id": 0}';
var _dadosusuario: TJSONObject;
var _dataNasc: TDateTime;
try
// Executa busca
var _resultados := ServerMethods.BuscarDadosMongoDB('nome_base', 'nome_coleção', _filtros, _projecoes);
// Varre o resultado
for var I := 0 to _resultados.Count - 1 do
begin
_dadosusuario := _resultados.Items[I] as TJSONObject;
ShowMessage(Format('%s (%s) - Nascimento: %s - Salário: R$ %.2f - Nível: %s',
[_dadosusuario.GetValue('nome').Value,
_dadosusuario.GetValue('email').Value,
FormatDateTime('dd/mm/yyyy', UnixToDateTime(_dadosusuario.GetValue('data_nascimento').Value.ToInteger)),
_dadosusuario.GetValue('salario').Value.ToDouble,
_dadosusuario.GetValue('nivel', 'Não definido')]));
end;
ShowMessage(Format('Encontrados %d funcionários de TI', [_resultados.Count]));
finally
FreeAndNil(_resultados);
end;📜 Exemplo de resposta:
[
{
"nome": "João Silva",
"email": "joao@empresa.com",
"data_nascimento": 831456000,
"salario": 4500.00
},
{
"nome": "Maria Santos",
"email": "maria@empresa.com",
"data_nascimento": 713808000,
"salario": 5500.00,
"nivel": "Sênior"
}
]⚡ Método - Excluir dados
procedure TServerMethods.ExcluirDadosMongoDB(const _base, _colecao, _filtros: String);🏛️ Exemplo de consumo no cliente:
// Excluir usuários inativos OU com salário muito baixo
var _filtros := '{"$or": [{"ativo": false}, {"salario": {"$lt": 2000}}]}';
ServerMethods.ExcluirDadosMongoDB('nome_base', 'nome_coleção', _filtros);*A exclusão é PERMANENTE. Sempre teste os filtros com BuscarDados antes de executar ExcluirDados!
Nota: Requer configuração prévia do MongoDB Atlas através do componente TKAFSConexaoMongo ou da configuração manual de um FDConnection e das credenciais apropriadas para funcionamento completo. Todos os filtros e projeções seguem o padrão do MongoDB. Certifique-se de ter todas as unidades externas baixadas e configuradas corretamente no projeto.

