كيف يمكن اخذ نسخة من قاعدة sqlite ورفعها على google drive

السلام عليكم تحياتى للجميع ااعمل على تطبيق react native استخدم قاعدة بيانات sqlite

اريد اخذ نسخة احتياطية من قاعدة البيانات ورفعها على google drive

يرجى الدخول لحسابك أو تسجيل حساب لتستطيع إضافة تعليق
حساب جديد دخول

التعليقات

ليس عندى الكثير من العلم بهذا الشأن ولكن هذه، طريقة رأيتها مرة في فيديو لليوتيوب

أولاً، تحتاج إلى إنشاء مجلد جديد في مشروع React Native الخاص بك يسمى "backups".

ثم، تحتاج إلى إنشاء ملف جديد في هذا المجلد يسمى "backup.js".

في ملف "backup.js"، تحتاج إلى استيراد مكتبة "react-native-fs".

ثم، تحتاج إلى إنشاء دالة تسمى "backupDatabase".

في دالة "backupDatabase"، تحتاج إلى استدعاء دالة "readFileSync" من مكتبة "react-native-fs" لقراءة قاعدة البيانات من الجهاز.

بعد ذلك، تحتاج إلى استدعاء دالة "writeFileSync" من مكتبة "react-native-fs" لكتابة قاعدة البيانات إلى الملف في مجلد "backups".

أخيرًا، تحتاج إلى استدعاء دالة "uploadFile" من مكتبة "react-native-google-drive" لرفع الملف إلى Google Drive.

Mustafa_Suleiman أضف ردا
  1. انتقل إلى Google Cloud Platform Console: https://console.cloud.googl...
  2. انقر فوق إنشاء مشروع.
  3. أدخل اسمًا لمشروعك وانقر فوق إنشاء.
  4. انقر فوق APIs & Services.
  5. انقر فوق Library.
  6. ابحث عن Google Drive API وانقر فوقه.
  7. انقر فوق Enable.

ثم عليك إنشاء ملف تعريف OAuth 2.0 لتطبيقك، كالتالي:

  1. في Google Cloud Platform Console، انقر فوق APIs & Services.
  2. انقر فوق Credentials.
  3. انقر فوق Create Credentials.
  4. حدد OAuth client ID.
  5. حدد Web application.
  6. أدخل اسمًا لتطبيقك وانقر فوق إنشاء.

سيتم فتح نافذة جديدة تتضمن ملف التعريف الخاص بك، فاحفظ الملف في مكان آمن.

وعليك الآن استخدام المكتبات التالية:

  • react-native-sqlite-storage للتعامل مع قاعدة البيانات
  • @react-native-google-signin/google-signin لتوفير تسجيل الدخول باستخدام Google
  • react-native-google-drive-api-wrapper للتعامل مع google drive api

وإليك مثال:

import SQLite from 'react-native-sqlite-storage';
import { GoogleSignin, statusCodes } from '@react-native-google-signin/google-signin';
import { GoogleDrive, MimeTypes } from 'react-native-google-drive-api-wrapper';


// اعتمادًا على هيكلة قاعدة البيانات الخاصة بك
const databaseName = 'yourDatabase.db';


// قم بفتح الاتصال بقاعدة البيانات
const db = SQLite.openDatabase({ name: databaseName });


// تحقق من تسجيل الدخول إلى Google
const signIn = async () => {
  try {
    await GoogleSignin.hasPlayServices();
    await GoogleSignin.signIn();
  } catch (error) {
    console.error('Google Sign-In Error', error);
  }
};


// قم بإجراء نسخة احتياطية لقاعدة البيانات
const backupDatabase = async () => {
  await signIn();


  db.transaction((tx) => {
    tx.executeSql(
      `ATTACH DATABASE ':memory:' AS backup;
       SELECT * INTO backup.${databaseName} FROM ${databaseName};`,
      [],
      (_, { rows }) => {
        const backupData = rows.item(0);


        // قم بتحميل البيانات إلى Google Drive
        GoogleDrive.files.createFileMultipart(
          backupData,
          MimeTypes.APPLICATION_SQLITE,
          { parents: ['root'], name: 'backup.db' },
        )
          .then((response) => {
            console.log('Backup uploaded to Google Drive:', response);
          })
          .catch((error) => {
            console.error('Google Drive Upload Error', error);
          });
      },
    );
  });
};


// استدعاء الوظيفة لإجراء النسخة الاحتياطية
backupDatabase();


وبالطبع عليك مراجعة وثائق react-native-sqlite-storage و react-native-google-drive-api-wrapper لضبط الكود حسب ما تريد والتعامل مع الأخطاء بشكل صحيح.