@zip.exe-go
@JPT
javascript
const db = await Deno.openKv();
const username = "john123";
const hashedPassword = "hashed_password";
const settings = {
volume: 0.8,
attack: 0.1,
decay: 0.2,
sustain: 0.5,
release: 0.2,
};
const userData = {
username,
password: hashedPassword,
settings,
};
await db.put(username, userData);
هذا المثال يفترض أنك قد قمت بتجهيز القيمة المموَّهة لكلمة المرور بالفعل قبل تخزينها في قاعدة البيانات. لاحظ أننا استخدمنا قيمة الاسم (username) كمفتاح لتخزين البيانات. يمكنك تغيير هذا حسب الحاجة إلى نظام المفاتيح الذي تفضله.
للوصول إلى هذه البيانات، يمكن استخدام الدالة `get` على النحو التالي:
javascript
const userData = await db.get(username);
if (userData) {
const settings = userData.settings;
// استخدم الإعدادات هنا
} else {
// المستخدم غير موجود في قاعدة البيانات
}
في هذا المثال، ستحصل على قيمة `userData` باستخدام اسم المستخدم كمفتاح، ثم يمكنك الوصول إلى إعدادات (settings) المستخدم واستخدامها كما ترغب.@zip.exe-go
@JPT
typescript
import { openKv, KvEntryMaybe } from "deno";
const db = await openKv();
// تخزين بيانات المستخدم
const username = "user1";
const password = "password1";
const encryptedPassword = encrypt(password); // تشفير كلمة المرور
const userData = {
volume: 0.8,
attack: 0.1,
decay: 0.2,
sustain: 0.5,
release: 0.2,
};
await db.put(username, {
password: encryptedPassword,
...userData,
});
// استعراض بيانات المستخدم
const userEntry: KvEntryMaybe<any> = await db.get(username);
if (userEntry.value === null) {
console.log("لم يتم العثور على المستخدم");
} else {
const decryptedPassword = decrypt(userEntry.value.password); // فك تشفير كلمة المرور
console.log("اسم المستخدم:", username);
console.log("كلمة المرور:", decryptedPassword);
console.log("بيانات المستخدم:", userEntry.value);
}
يرجى ملاحظة أنه يتعين استخدام دوال التشفير وفك التشفير الملائمة لطريقة التشفير المستخدمة في التطبيق. ستحتاج إلى استيراد هذه الدوال واستخدامها في الأمثلة السابقة لضمان تشفير وفك تشفير كلمة المرور بشكل صحيح.@zip.exe-go
@JPT
@Zizwar-gi
@JPT
javascript
import { openKv } from "https://deno.land/x/kv/mod.ts";
const db = await openKv(); // Open a connection to the key-value database
// Store a value in the database
await db.put(["foo"], "bar");
// Retrieve the value from the database
const result = await db.get(["foo"]);
console.log(result.value); // Output: "bar"
// Delete the value from the database
await db.delete(["foo"]);
// Close the database connection
db.close();
In this example, we first open a connection to the key-value database using the `openKv()` function. Then, we use the `put()` method to store a value with the key `["foo"]` in the database. We can retrieve the value using the `get()` method and print it to the console. Finally, we delete the value from the database using the `delete()` method, and close the database connection using the `close()` method.@Zizwar-gi
@JPT
typescript
import { createClient, SupabaseClient } from "@supabase/supabase-js";
interface DatabaseUser {
userId: string;
userName: string;
avatarUrl: string;
}
export class Database {
#client: SupabaseClient;
constructor(client?: SupabaseClient) {
this.#client =
client ??
createClient(
Deno.env.get("SUPABASE_API_URL")!,
Deno.env.get("SUPABASE_ANON_KEY")!
);
}
async __insertUser(user: DatabaseUser & { accessToken: string }) {
const { error } = await this.#client
.from("users")
.upsert(
[
{
// id: user.userId,
avatar_url: user.avatarUrl,
access_token: user.accessToken,
},
],
{
returning: "minimal",
where: { username: user.userName },
}
);
if (error) {
throw new Error(error.message);
}
}
async getUserByAccessTokenOrThrow(
accessToken: string
): Promise<DatabaseUser> {
const user = await this.getUserByAccessToken(accessToken);
if (user == null) {
throw new Error("Could not find user with access token.");
}
return user;
}
async getUserByAccessToken(
accessToken: string
): Promise<DatabaseUser | undefined> {
const { data, error } = await this.#client
.from("users")
.select("id,username,avatar_url")
.eq("access_token", accessToken);
if (error) {
throw new Error(error.message);
}
if (data.length === 0) {
return undefined;
}
return {
userId: data[0].id,
userName: data[0].username,
avatarUrl: data[0].avatar_url,
};
}
async getUserByUsername(user: string): Promise<any> {
const { data, error } = await this.#client
.from("rooms")
.select("*")
.eq("username", user)
.single();
if (error) {
throw new Error(error.message);
}
return data ?? [];
}
}
This code creates a `Database` class that uses Supabase's JavaScript client to interact with a Supabase database. It includes methods for inserting and retrieving user data from the "users" table. The constructor takes an optional Supabase client, allowing you to pass in a pre-configured client or create a new one using environment variables.@Zizwar-gi
@JPT
@Zizwar-gi
@JPT
@Zizwar-gi
@JPT