Több mutáció a GraphQL for Data API Builderben

A Data API Builder (DAB) támogatja a több mutációs művelet egyetlen tranzakcióba való kombinálását. Több mutáció támogatja azokat a forgatókönyveket, amelyekben több, ugyanahhoz az entitáshoz tartozó elemet kell létrehoznia, vagy egy kapcsolódó entitáshoz tartozó több elemet kell létrehoznia. Ez az útmutató több mutációs művelettel végigvezet egy mintaforgatókönyven.

Előfeltételek

  • Meglévő SQL-kiszolgáló és -adatbázis.
  • Adat API-építő CLI. A parancssori felület telepítése
  • Adatbázis-ügyfél (SQL Server Management Studio stb.)
    • Ha nincs telepítve ügyfél, telepítse az SQL Server Management Studiót.

Táblák létrehozása

Először hozzon létre két alaptáblát, amelyek a könyveket és a hozzájuk tartozó fejezeteket jelölik. A könyvek egy-a-többhöz kapcsolatban vannak a hozzájuk tartozó fejezetekkel.

  1. Csatlakozzon az SQL-adatbázishoz az előnyben részesített ügyfél vagy eszköz használatával.

  2. Hozzon létre egy Books nevű táblát, amely id, title, year, és pages oszlopokat tartalmaz.

    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. Hozzon létre egy másik táblát, amely tartalmazza a Chapters, id, name és pages oszlopokat. Hozzon létre egy olyan oszlopot book_id , amely idegenkulcs-kapcsolatot tartalmaz a idBooks tábla oszlopával.

    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. Ellenőrizze, hogy a táblák néhány gyakori SQL-lekérdezéssel lettek-e létrehozva.

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

    Megjegyzés:

    Ezen a ponton a lekérdezések nem adnak vissza adatokat.

Konfigurációs fájl összeállítása

Most a DAB CLI használatával hozzon létre konfigurációs fájlt, entitásokat és entitáskapcsolatokat.

  1. Terminál megnyitása

  2. Tárolja az SQL-adatbázis kapcsolati karakterláncát SQL_CONNECTION_STRING nevű rendszerhéjváltozóként.

    SQL_CONNECTION_STRING="<your-sql-connection-string>"
    
    $SQL_CONNECTION_STRING="<your-sql-connection-string>"
    
  3. Futtassa dab init a következő tulajdonságokat megadva.

    Érték
    database-type mssql
    graphql.multiple-create.enabled true
    host-mode development
    connection-string Használja az SQL_CONNECTION_STRING előző lépésben létrehozott rendszerhéjváltozót.
    dab init --database-type "mssql" --graphql.multiple-create.enabled true --host-mode "development" --connection-string $SQL_CONNECTION_STRING
    
  4. Futtassa dab add a book entitás hozzáadásához, amely a következő tulajdonságokat adja meg.

    Érték
    source dbo.Books
    permissions anonymous:*
    dab add Book --source "dbo.Books" --permissions "anonymous:*"
    
  5. Futtassa dab add újra a következő tulajdonságok megadásával egy Fejezet entitás hozzáadása céljából.

    Érték
    source dbo.Chapters
    permissions anonymous:*
    dab add Chapter --source "dbo.Chapters" --permissions "anonymous:*"  
    
  6. Futtassa a dab update parancsot a Book to Chapter kapcsolat létrehozásához, megadva a következő tulajdonságokat.

    Érték
    relationship chapters
    cardinality many
    dab update Book --relationship chapters --target.entity Chapter --cardinality many
    
  7. Végül futtassa dab update még egyszer a Fejezet a könyvhez kapcsolatot, amely a következő tulajdonságokat adja meg.

    Érték
    relationship book
    cardinality one
    dab update Chapter --relationship book --target.entity Book --cardinality one
    

Több létrehozási mutáció végrehajtása

A dolgok becsomagolásához használja a DAB CLI-t az API futtatására és a GraphQL-végpont tesztelésére a Banana Cake Pop használatával.

  1. Indítsa el a futtatókörnyezeti motort az aktuális konfigurációval.

    dab start
    
  2. Lépjen a /graphql relatív végponthoz a futó alkalmazás esetén. Ez a végpont megnyitja a Banana Cake Pop felületet.

    Megjegyzés:

    Alapértelmezés szerint ez a végpont lesz https://localhost:5001/graphql.

  3. Hozzon létre egy GraphQL-mutációt, amely három különböző sort hoz létre az adatbázis két táblájában. Ez a mutáció mind a Book, mind a Chapter entitást egyetlen "többszörös létrehozási" műveletben használja. Használja a következő tulajdonságokat a mutációhoz.

    Entitás típusa azonosító Név Oldalak Év
    Könyv 1 Bevezetés a Data API Builderbe 200 2024
    Fejezet 2 Konfigurációs fájlok 150
    Fejezet 3 Futás közben 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. Figyelje meg a mutáció kimenetét. A mutáció mindkét entitástípushoz kapcsolódó adatokat hozott létre.

    {
      "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. GraphQL-lekérdezéssel lekérheti az adatbázis összes könyvét, beleértve a kapcsolódó fejezeteket is.

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

    Megjegyzés:

    Ezen a ponton a lekérdezésnek két fejezettel kell visszaadnia az egyetlen könyvet.

  6. Figyelje meg a lekérdezés kimenetét egy könyvtömbdel, beleértve a fejezetek beágyazott tömbét is.

    {
      "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. Csatlakozzon ismét az SQL-adatbázishoz az előnyben részesített ügyfél vagy eszköz használatával.

  8. Ellenőrizze, hogy az adatok sikeresen létrejöttek-e SQL-lekérdezéssel.

    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
    

    Megjegyzés:

    A lekérdezésnek két fejezetrekordot kell visszaadnia.