Skip to content

Commit

Permalink
Create .NET quickstart
Browse files Browse the repository at this point in the history
  • Loading branch information
adityaoberai committed Sep 25, 2023
1 parent aa8ec3d commit db8d84e
Showing 1 changed file with 183 additions and 0 deletions.
183 changes: 183 additions & 0 deletions src/routes/docs/quick-starts/dotnet/+page.markdoc
Original file line number Diff line number Diff line change
@@ -0,0 +1,183 @@
---
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 `<YOUR_PROJECT_ID>` with your project ID and `<YOUR_API_KEY>` with your API key.

```csharp
using Appwrite;
using Appwrite.Models;
using Appwrite.Services;

var client = new Client();

client
.SetEndpoint("https://cloud.appwrite.io/v1")
.SetProject("<YOUR_PROJECT_ID>")
.SetKey("<YOUR_API_KEY>");
```

{% /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;

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
var testTodo1 = new Dictionary<string, object>()
{
{"title", "Buy apples"},
{"description", "At least 2KGs"},
{"isComplete", true}
};

var testTodo2 = new Dictionary<string, object>()
{
{"title", "Wash the apples"},
{"isComplete", true}
};

var testTodo3 = new Dictionary<string, object>()
{
{"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 %}

0 comments on commit db8d84e

Please sign in to comment.