Bagikan melalui


Beberapa mutasi di penyusun GraphQL for Data API

Penyusun API Data (DAB) mendukung menggabungkan beberapa operasi mutasi bersama-sama ke dalam satu transaksi. Beberapa mutasi mendukung skenario di mana Anda perlu membuat beberapa item milik entitas yang sama atau membuat beberapa item milik entitas terkait. Panduan ini memandu melalui skenario sampel menggunakan beberapa operasi mutasi.

Prasyarat

  • Server dan database SQL yang ada.
  • CLI penyusun API Data. Pasang CLI
  • Klien database (SQL Server Management Studio, Azure Data Studio, dll.)

Membuat tabel

Mulailah dengan membuat dua tabel dasar untuk mewakili buku dan bab masing-masing. Buku memiliki hubungan satu-ke-banyak dengan bab yang sesuai.

  1. Sambungkan ke database SQL menggunakan klien atau alat pilihan Anda.

  2. Create tabel bernama Books dengan kolom , , titleyear, dan pagesid.

    DROP TABLE IF EXISTS dbo.Books;
    
    CREATE TABLE dbo.Books
    (
        id int NOT NULL PRIMARY KEY,
        title nvarchar(1000) NOT NULL,
        [year] int null,
        [pages] int null
    )
    GO
    
  3. Create tabel lain bernama Chapters dengan kolom , name, dan pagesid. book_id Create kolom dengan hubungan kunci asing ke id kolom Books tabel.

    DROP TABLE IF EXISTS dbo.Chapters;
    
    CREATE TABLE dbo.Chapters
    (
        id int NOT NULL PRIMARY KEY,
        [name] nvarchar(1000) NOT NULL,
        [pages] int null,
        book_id int NOT NULL,
        FOREIGN KEY (book_id) REFERENCES dbo.Books(id)
    )
    GO
    
  4. Validasi bahwa tabel Anda dibuat dengan beberapa kueri SQL umum.

    SELECT * FROM dbo.Books
    
    SELECT * FROM dbo.Chapters
    

    Catatan

    Pada titik ini, kueri tidak boleh mengembalikan data apa pun.

Membangun file konfigurasi

Sekarang, gunakan DAB CLI untuk membuat file konfigurasi, entitas, dan hubungan entitas.

  1. Buka terminal

  2. Simpan database SQL Anda string koneksi sebagai variabel shell bernama SQL_CONNECTION_STRING.

    SQL_CONNECTION_STRING="<your-sql-connection-string>"
    
    $SQL_CONNECTION_STRING="<your-sql-connection-string>"
    
  3. Jalankan dab init menentukan properti berikut.

    Nilai
    database-type mssql
    graphql.multiple-create.enabled true
    host-mode development
    connection-string Gunakan variabel shell yang SQL_CONNECTION_STRING dibuat pada langkah sebelumnya.
    dab init --database-type "mssql" --graphql.multiple-create.enabled true --host-mode "development" --connection-string $SQL_CONNECTION_STRING
    
  4. Jalankan dab add untuk menambahkan entitas Buku yang menentukan properti berikut.

    Nilai
    source dbo.Books
    permissions anonymous:*
    dab add Book --source "dbo.Books" --permissions "anonymous:*"
    
  5. Jalankan dab add lagi untuk menambahkan entitas Bab sekarang menentukan properti berikut.

    Nilai
    source dbo.Chapters
    permissions anonymous:*
    dab add Chapter --source "dbo.Chapters" --permissions "anonymous:*"  
    
  6. Jalankan dab update untuk membuat hubungan Buku ke Bab yang menentukan properti berikut.

    Nilai
    relationship chapters
    cardinality many
    dab update Book --relationship chapters --target.entity Chapter --cardinality many
    
  7. Terakhir, jalankan dab update satu kali terakhir untuk membuat hubungan Bab ke Buku yang menentukan properti berikut.

    Nilai
    relationship book
    cardinality one
    dab update Chapter --relationship book --target.entity Book --cardinality one
    

Jalankan beberapa mutasi buat

Untuk membungkus hal-hal, gunakan DAB CLI untuk menjalankan API dan menguji titik akhir GraphQL menggunakan Banana Cake Pop.

  1. Mulai mesin runtime menggunakan konfigurasi saat ini.

    dab start
    
  2. Navigasikan ke titik akhir relatif untuk aplikasi Anda yang /graphql sedang berjalan. Titik akhir ini membuka antarmuka Banana Cake Pop.

    Catatan

    Secara default, ini akan menjadi https://localhost:5001/graphql.

  3. Tulis mutasi GraphQL untuk membuat tiga baris berbeda di dua tabel dalam database Anda. Mutasi ini menggunakan Book entitas dan Chapter dalam satu operasi "beberapa buat". Gunakan properti berikut untuk mutasi.

    Jenis entitas ID Nama Halaman Tahun
    Buku 1 Pengantar penyusun API Data 200 2024
    Bab 2 File konfigurasi 150
    Bab 3 Berjalan 50
    mutation {
      createBook(
        item: {
          id: 1
          title: "Introduction to Data API builder"
          pages: 200
          year: 2024
          chapters: [
            {
                id: 2
                name: "Configuration files", pages: 150 
            }
            {
                id: 3
                name: "Running", pages: 50
            }
          ]
        }
      ) {
        id
        title
        pages
        year
        chapters {
          items {
            name
            pages
          }
        }
      }
    }
    
  4. Amati output dari mutasi. Mutasi membuat data terkait untuk kedua jenis entitas.

    {
      "data": {
        "createBook": {
          "id": 1,
          "title": "Introduction to Data API builder",
          "pages": 200,
          "year": 2024,
          "chapters": {
            "items": [
              {
                "name": "Configuration files",
                "pages": 150
              },
              {
                "name": "Running",
                "pages": 50
              }
            ]
          }
        }
      }
    }
    
  5. Gunakan kueri GraphQL untuk mengambil semua buku dalam database Anda termasuk bab terkait.

    query {
      books {
        items {
          pages
          title
          year
          chapters {
            items {
              name
              pages
            }
          }
        }
      }
    }
    

    Catatan

    Pada titik ini, kueri harus mengembalikan satu buku dengan dua bab.

  6. Amati output dari kueri ini dengan array buku termasuk array bab berlapis mereka.

    {
      "data": {
        "books": {
          "items": [
            {
              "pages": 200,
              "title": "Introduction to Data API builder",
              "year": 2024,
              "chapters": {
                "items": [
                  {
                    "name": "Configuration files",
                    "pages": 150
                  },
                  {
                    "name": "Running",
                    "pages": 50
                  }
                ]
              }
            }
          ]
        }
      }
    }
    
  7. Sambungkan lagi ke database SQL menggunakan klien atau alat pilihan Anda.

  8. Validasi bahwa data Anda berhasil dibuat menggunakan kueri SQL.

    SELECT 
        c.name AS chapterName,
        c.pages AS chapterPages,
        b.title AS bookName,
        b.year AS releaseYear
    FROM dbo.Chapters c
    LEFT JOIN dbo.Books b ON b.id = c.book_id
    

    Catatan

    Kueri ini harus mengembalikan dua rekaman bab.