Ana içeriğe geç

Deno ile Planetscale Kullanımı

Planetscale, geliştiricilerin komut satırı üzerinden veritabanları oluşturup, dallandırıp ve dağıtabildiği bir geliştirici iş akışı ile tasarlanmış, MySQL uyumlu bir sunucusuz veritabanıdır.

Kaynağı buradan görüntüleyin.

Deno ile çalışmak için Planetscale sunucusuz sürücüsünü, @planetscale/database, kullanacağız. İlk olarak main.ts dosyasını oluşturmak ve bu paketten connect yöntemini içe aktarmak istiyoruz:

import { connect } from "npm:@planetscale/database@^1.4";

Bağlantımızı Yapılandırma

Bağlantı üç kimlik bilgisi gerektirir: host, kullanıcı adı ve şifre. Bunlar veritabanına özeldir, bu nedenle önce Planetscale'de bir veritabanı oluşturmalıyız. Bunu başlangıç talimatlarını takip ederek yapabilirsiniz burada.

ipucu

Şemayı eklemek için endişelenmeyin—bunu @planetscale/database üzerinden yapabiliriz.

Veritabanını oluşturduktan sonra, Genel Bakış'a gidin, "Bağlan" seçeneğine tıklayın ve "Connect with @planetscale/database" seçeneğini seçin. Böylece host ve kullanıcı adını alabilirsiniz. Ardından, veritabanınız için yeni bir şifre oluşturmak üzere Şifreler'e tıklayın. Üç kimlik bilgisine sahip olduğunuzda, bunları doğrudan girebilir veya daha iyi bir yöntem olarak çevresel değişkenler olarak saklayabilirsiniz:

export HOST=<host>
export USERNAME=<username>
export PASSWORD=<password>

Ardından Deno.env kullanarak çağırın:

const config = {
host: Deno.env.get("HOST"),
username: Deno.env.get("USERNAME"),
password: Deno.env.get("PASSWORD"),
};

const conn = connect(config);

Bu, çevresel değişkenleri dashboard'da ayarlarsanız Deno Deploy'de de çalışacaktır. Şu şekilde çalıştırın:

deno run --allow-net --allow-env main.ts

conn nesnesi artık Planetscale veritabanımıza açık bir bağlantıdır.

Veritabanı Tablosu Oluşturma ve Doldurma

Bağlantınız çalışır durumda olduğuna göre, SQL komutları ile tablolar oluşturmak ve başlangıç verilerini eklemek için conn.execute() kullanabilirsiniz:

await conn.execute(
"CREATE TABLE dinosaurs (id int NOT NULL AUTO_INCREMENT PRIMARY KEY, name varchar(255) NOT NULL, description varchar(255) NOT NULL);",
);
await conn.execute(
"INSERT INTO `dinosaurs` (id, name, description) VALUES (1, 'Aardonyx', 'Sauropodların evriminde erken bir aşama.'), (2, 'Abelisaurus', 'Abel'in kertenkeleyi tek bir kafadan yeniden yapılandırıldığı.') , (3, 'Deno', 'Hayatını yaşayan en hızlı dinozor.')",
);

Planetscale Sorgulama

Aynı conn.execute() yöntemini sorgularımızı yazmak için de kullanabiliriz. Dinozorlarımızın bir listesini alalım:

const results = await conn.execute("SELECT * FROM `dinosaurs`");
console.log(results.rows);
bilgi

Sonuç:

[
{
id: 1,
name: "Aardonyx",
description: "Sauropodların evriminde erken bir aşama.",
},
{
id: 2,
name: "Abelisaurus",
description: "Abel'in kertenkeleyi tek bir kafadan yeniden yapılandırıldığı.",
},
{ id: 3, name: "Deno", description: "Hayatını yaşayan en hızlı dinozor." },
];

Ayrıca bir dinozor adı belirtmek suretiyle veritabanından yalnızca tek bir satır alabiliriz:

const result = await conn.execute(
"SELECT * FROM `dinosaurs` WHERE `name` = 'Deno'",
);
console.log(result.rows);

Bu da bize tek bir satır sonucu verir:

[{ id: 3, name: "Deno", description: "Hayatını yaşayan en hızlı dinozor." }];

Planetscale ile çalışma hakkında daha fazla bilgiye belgelerinden ulaşabilirsiniz.