From 6f7a971d2fbf8d8f0452c236c3e1dfcf7a0f61c7 Mon Sep 17 00:00:00 2001 From: Aditya Oberai Date: Mon, 25 Sep 2023 17:42:24 +0000 Subject: [PATCH] Create .NET quickstart --- .../docs/quick-starts/dotnet/+page.markdoc | 189 ++++++++++++++++++ 1 file changed, 189 insertions(+) create mode 100644 src/routes/docs/quick-starts/dotnet/+page.markdoc diff --git a/src/routes/docs/quick-starts/dotnet/+page.markdoc b/src/routes/docs/quick-starts/dotnet/+page.markdoc new file mode 100644 index 0000000000..7ea533c184 --- /dev/null +++ b/src/routes/docs/quick-starts/dotnet/+page.markdoc @@ -0,0 +1,189 @@ +--- +layout: article +title: Start with .NET +description: This is the description used for SEO. +--- +Learn to setup your first .NET project powered by Appwrite. +{% section #step-1 step=1 title="Create project" %} +Head to the [Appwrite Console](https://cloud.appwrite.io/console). + +![Create project screen](/images/docs/databases/quick-start/create-project.png) + +If this is your first time using Appwrite, create an account and create your first project. + +Then, under **Integrate with your server**, add an **API Key** with the following scopes. + +| Category {% width=120 %} | Required scopes | Purpose | +|-----------|-----------------------|---------| +| Database | `databases.write` | Allows API key to create, update, and delete [databases](/docs/products/databases/databases). | +| | `collections.write` | Allows API key to create, update, and delete [collections](/docs/products/databases/collections). | +| | `attributes.write` | Allows API key to create, update, and delete [attributes](/docs/products/databases/collections#attributes). | +| | `documents.read` | Allows API key to create, update, and delete [documents](/docs/products/databases/documents). | +| | `documents.write` | Allows API key to read [documents](/docs/products/databases/documents). | + +Other scopes are optional. + +![Add API Key]() + +{% /section %} +{% section #step-2 step=2 title="Create .NET project" %} +Create a .NET CLI application. + +```sh +dotnet new console -o MyApp +cd MyApp +``` + +{% /section %} +{% section #step-3 step=3 title="Install Appwrite" %} + +Install the .NET Appwrite SDK. + +```sh +dotnet add package Appwrite +``` +{% /section %} +{% section #step-4 step=4 title="Import Appwrite" %} + +Find your project ID in the **Settings** page. Also, click on the **View API Keys** button to find the API key that was created earlier. + +![Settings page in Appwrite Console.](/images/docs/databases/quick-start/project-id.png) + +Open the file `Program.cs` and initialize the Appwrite Client. Replace `` with your project ID and `` with your API key. + +```csharp +using Appwrite; +using Appwrite.Models; +using Appwrite.Services; + +// Initialize Appwrite Client + +var client = new Client(); + +client + .SetEndpoint("https://cloud.appwrite.io/v1") + .SetProject("") + .SetKey(""); +``` + +{% /section %} +{% section #step-5 step=5 title="Initialize database" %} + +Once the Appwrite Client is initialized, create a function to configure a todo collection. + +```csharp +var databases = new Databases(client); + +Database todoDatabase; +Collection todoCollection; + +// Prepare the database + +todoDatabase = await databases.Create( + databaseId: ID.Unique(), + name: "TodosDB" +); + +todoCollection = await databases.CreateCollection( + databaseId: todoDatabase.Id, + collectionId: ID.Unique(), + name: "Todos" +); + +await databases.CreateStringAttribute( + databaseId: todoDatabase.Id, + collectionId: todoCollection.Id, + key: "title", + size: 255, + required: true +); + +await databases.CreateStringAttribute( + databaseId: todoDatabase.Id, + collectionId: todoCollection.Id, + key: "description", + size: 255, + required: false, + xdefault: "This is a test description" +); + +await databases.CreateBooleanAttribute( + databaseId: todoDatabase.Id, + collectionId: todoCollection.Id, + key: "isComplete", + required: true +); +``` + +{% /section %} +{% section #step-6 step=6 title="Add documents" %} +Create a function to add some mock data into your new collection. +```csharp +// Seed the database + +var testTodo1 = new Dictionary() +{ + {"title", "Buy apples"}, + {"description", "At least 2KGs"}, + {"isComplete", true} +}; + +var testTodo2 = new Dictionary() +{ + {"title", "Wash the apples"}, + {"isComplete", true} +}; + +var testTodo3 = new Dictionary() +{ + {"title", "Cut the apples"}, + {"description", "Don't forget to pack them in a box"}, + {"isComplete", false} +}; + +await databases.CreateDocument( + databaseId: todoDatabase.Id, + collectionId: todoCollection.Id, + documentId: ID.Unique(), + data: testTodo1 +); + +await databases.CreateDocument( + databaseId: todoDatabase.Id, + collectionId: todoCollection.Id, + documentId: ID.Unique(), + data: testTodo2 +); + +await databases.CreateDocument( + databaseId: todoDatabase.Id, + collectionId: todoCollection.Id, + documentId: ID.Unique(), + data: testTodo3 +); +``` + +{% /section %} +{% section #step-7 step=7 title="Retrieve documents" %} + +Create a function to retrieve the mock todo data. + +```csharp +var todos = await databases.ListDocuments( + databaseId: todoDatabase.Id, + collectionId: todoCollection.Id +); + +foreach (var todo in todos.Documents) +{ + Console.WriteLine($"Title: {todo.Data["title"]}\nDescription: {todo.Data["description"]}\nIs Todo Complete: {todo.Data["isComplete"]}\n\n"); +} +``` + +{% /section %} + +{% section #step-8 step=8 title="All set" %} + +Run your project with `dotnet run` and view the response in your console. + +{% /section %} \ No newline at end of file