Convert to Typescript
This commit is contained in:
91
src/commands/utils/db/game.ts
Normal file
91
src/commands/utils/db/game.ts
Normal file
@@ -0,0 +1,91 @@
|
||||
import {
|
||||
MongoClient,
|
||||
Db,
|
||||
Collection,
|
||||
Document,
|
||||
UpdateResult,
|
||||
DeleteResult,
|
||||
} from 'mongodb';
|
||||
import config from '../../../config';
|
||||
|
||||
let client: MongoClient;
|
||||
let database: Db;
|
||||
let collection: Collection<Document>;
|
||||
|
||||
async function initializeDbConnection() {
|
||||
if (!client) {
|
||||
client = new MongoClient(config.mongodbUri);
|
||||
await client.connect();
|
||||
database = client.db('butler_db');
|
||||
collection = database.collection('GameFeatures');
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieves a list of game names from the database.
|
||||
*
|
||||
* @returns An array of game objects containing game names.
|
||||
*/
|
||||
export async function listGameNames(): Promise<any[]> {
|
||||
await initializeDbConnection();
|
||||
return collection.find({}, { projection: { game: 1 } }).toArray();
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieves a specific game by its name from the database.
|
||||
*
|
||||
* @param game - The name of the game to retrieve.
|
||||
* @returns The game object if found, or null if not found.
|
||||
*/
|
||||
export async function getGame(game: string): Promise<any | null> {
|
||||
await initializeDbConnection();
|
||||
return collection.findOne({ game });
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets a key-value pair for a specific game in the database.
|
||||
* If the game does not exist, it will be created.
|
||||
*
|
||||
* @param game - The name of the game to update or create.
|
||||
* @param key - The key to set or update in the game object.
|
||||
* @param value - The value to set for the specified key.
|
||||
* @returns The result of the update operation.
|
||||
*/
|
||||
export async function setGame(
|
||||
game: string,
|
||||
key: string,
|
||||
value: any
|
||||
): Promise<UpdateResult> {
|
||||
await initializeDbConnection();
|
||||
return collection.updateOne(
|
||||
{ game },
|
||||
{ $set: { game, [key]: value } },
|
||||
{ upsert: true }
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Deletes a game from the database by its name.
|
||||
*
|
||||
* @param game - The name of the game to delete.
|
||||
* @returns The result of the delete operation.
|
||||
*/
|
||||
export async function deleteGame(game: string): Promise<DeleteResult> {
|
||||
await initializeDbConnection();
|
||||
return collection.deleteOne({ game });
|
||||
}
|
||||
|
||||
/**
|
||||
* Deletes a specific field from a game object in the database.
|
||||
*
|
||||
* @param game - The name of the game to update.
|
||||
* @param key - The field key to remove from the game object.
|
||||
* @returns The result of the update operation.
|
||||
*/
|
||||
export async function deleteField(
|
||||
game: string,
|
||||
key: string
|
||||
): Promise<UpdateResult> {
|
||||
await initializeDbConnection();
|
||||
return collection.updateOne({ game }, { $unset: { [key]: '' } });
|
||||
}
|
||||
Reference in New Issue
Block a user