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..