Executando verificação de segurança...
1

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

Carregando publicação patrocinada...
1

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

1

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