رفتن به محتوا
سارویتوسعه‌دهندگان
مستندات/ابر ساروی

پایگاه‌داده و مجموعه‌ها

دادهٔ مالک‌محور با نمونه‌های JavaScript و Python.

مجموعه و ردیف

دادهٔ Starter در PostgreSQL نگه‌داری می‌شود و از API مجموعه‌های JSON قابل استفاده است. هر ردیف یک شیء JSON تا ۱۵ KB دارد. مجموعهٔ records از ابتدا وجود دارد. SQL دلخواه، اتصال مستقیم PostgreSQL، Realtime و افزونه‌ها در Starter ارائه نمی‌شوند؛ آن‌ها به ابر اختصاصی تعلق دارند.

ساخت مجموعه از سرور

POST /v1/cloud/{id}/database با کلید مدیریت:

Python
import json, os, urllib.request, urllib.error

payload = {
    "action": "create_collection",
    "name": "notes",
    "public_read": False
}

request = urllib.request.Request(
    "https://api.sarovi.ir/v1/cloud/{id}/database",
    data=json.dumps(payload, ensure_ascii=False).encode("utf-8"),
    headers={
        "Authorization": "Bearer " + os.environ["SAROVI_API_KEY"],
        "Content-Type": "application/json"
    },
    method="POST"
)
try:
    with urllib.request.urlopen(request, timeout=300) as response:
        result = json.load(response)
        print(result)
except urllib.error.HTTPError as error:
    detail = json.load(error)
    raise RuntimeError(f"{error.code}: {detail['error'].get('code', detail['error'].get('type', 'HTTP_ERROR'))}") from error

کلید را در متغیر محیطی SAROVI_API_KEY قرار بده. بدون نصب کتابخانه؛ با Python استاندارد.

نام مجموعه با حرف کوچک شروع می‌شود و حروف کوچک، اعداد و زیرخط می‌پذیرد. public_read:false دسترسی خواندن را به مالک ردیف محدود می‌کند. true همهٔ ردیف‌های آن مجموعه را برای دارندهٔ کلید عمومی قابل خواندن می‌کند؛ برای دادهٔ حساس استفاده نکنید.

خواندن و نوشتن از برنامه

نمونه‌ها از تابع cloud در راهنمای ورود استفاده می‌کنند. ابتدا کاربر وارد شده باشد.

javascript
const inserted = await cloud("/data/notes", "POST", { title: "اولین یادداشت" });
const rows = await cloud("/data/notes");
await cloud(`/data/notes/${inserted.data.id}`, "PATCH", { title: "ویرایش شد" });
await cloud(`/data/notes/${inserted.data.id}`, "DELETE");
console.log(rows.data);
python
inserted = cloud("/data/notes", "POST", {"title": "اولین یادداشت"})
rows = cloud("/data/notes")
cloud(f"/data/notes/{inserted['data']['id']}", "PATCH", {"title": "ویرایش شد"})
cloud(f"/data/notes/{inserted['data']['id']}", "DELETE")
print(rows["data"])

PATCH کل شیء data را جایگزین می‌کند. مالک از نشست معتبر تعیین می‌شود؛ فرستادن owner_id داخل data مالکیت را عوض نمی‌کند. هر کاربر فقط ردیف خودش را ویرایش و حذف می‌کند. برای خروجی بیشتر، GET /data/notes?offset=100 را بخوانید؛ هر صفحه حداکثر ۱۰۰ ردیف و next_offset دارد. در حین نوشتن هم‌زمان، صفحه‌بندی offset یک snapshot ثابت نیست.

مدیریت و خروجی

GET /v1/cloud/{id}/database فهرست مجموعه‌هاست. POST با action:list و table و offset داده‌ها را برای مدیر می‌خواند. action:insert با data، action:update با id و data، و action:delete با id عملیات مدیریت هستند. ردیف مدیریتی مالک کاربر ندارد؛ فقط مدیر یا مجموعهٔ public_read آن را می‌بیند. برای نسخهٔ پشتیبان، همهٔ صفحات هر مجموعه را صادر کنید. داده‌ها، فایل‌ها و نشست‌های ابرهای دیگر قابل دسترسی نیستند.

قرارداد API 1.6.0 · تاریخچهٔ تغییرات