compartilha codigo pra gente entender o que vc ta fazendo se possivel.
qual o problema que quer resolver zipando o banco inteiro do app e mandando pra uma api?
compartilha codigo pra gente entender o que vc ta fazendo se possivel.
qual o problema que quer resolver zipando o banco inteiro do app e mandando pra uma api?
Essa função toda que eu estou fazendo já funciona mas sem o arquivo comprimido, eu preciso dessa função pq no meu app o pessoal precisa sincronizar o banco de dados local com o banco de dados online, e dessa forma ficou mais rápido de fazer isso, eu envio o banco para o servidor e lá no servidor eu faço todas as inserções/updated/deletes que precisariam ser feitos no app, aí a api devolve o banco para o app e pronto... Só que eu queria comprimir esse arquivo e enviar para api e descomprimir lá na api (no caminho de volta a mesma coisa)... Esse banco pode ser que fique grande e eu não sei quais problemas isso pode acarretar se o usuário tentar enviar o banco muito grande pois eles usam internet muito instável e eu já vi que tem tambem um limite de payload que é suportado para transmissão entre client/server.
async function exportLocalDB() {
// DIRETÓRIO ONDE ESTÁ O BANCO SQLITE DO APP
const dbPath: string = FileSystem.documentDirectory + 'SQLite/db.db';
// DIRETÓRIO ONDE ESTARÁ O BANCO COMPRIMIDO
let zipPath = FileSystem.documentDirectory + "SQLite/archive.zip";
await FileSystem.getInfoAsync(dbPath).then(async (response) => {
const { exists } = response;
if (exists) {
try {
// FUNÇÃO PARA COMPRIMIR O BANCO SQLITE E O ARQUIVO COMPRIMIDO SALVANDO NO DIRETORIO ZIPPATH
const zipContent = createZip(dbPath, zipPath)
const generatedName = getDeviceName()
let data: any = new FormData();
// ADICIONANDO A UM FORM
data.append('file', {
uri: zipContent,
type: 'application/zip',
name: generatedName
});
// ENVIANDO PARA API
const teste = await _sendLocalDataBase({ localDB: data?._parts[0][1], id_actor: session?.user?.id_actor })
} catch (error) {
console.error("FALHA TO EXPORT DB:", error)
}
} else {
// continue...
}
}).catch(error => {
console.log("FALHA AO ENCONTRAR BASE", error)
})
}
De tudo nesse código o que falta é apenas a função createZip, eu não estou conseguindo comprimir o arquivo para então pegar esse arquivo comprimido e enviar para o servidor..
nao faz mais sentido vc desenvolver alguma mecânica de sincronização? imagina que mudei uma linha somente, vai mandar o banco todo? coitado do meu 3G
Sim, da forma atual agt faz assim, agt confere o que tem de novo e apenas envia o que tem de novo, porém a sincronização está levando as vezes 30 minutos pois todos os dias tem muitas coisas pra enviar pro usuário... O problema não é que o usuário tenha mudado apenas uma linha, é que todos os dias o banco recebe 20, 40, 50 mil linhas novas que várias dessas linhas esse usuário precisa ter localmente