This repository has been archived on 2025-10-20. You can view files and clone it, but cannot push or open issues or pull requests.
Files
esp-projekt/database/helpers/maphelper.ts
2025-03-30 22:02:56 +02:00

122 lines
2.6 KiB
TypeScript

/// <reference lib="deno.ns" />
/**
* @author Esad Mustafoski
* @description This file makes accessing the Database easier by creating a map for each type of data
* @file maphelper.ts
*/
// +++ IMPORTS ------------------------------------------------------ //
import { Row } from "https://deno.land/x/sqlite@v3.9.1/mod.ts";
import {
Accounts,
Chat,
Comments,
Message,
Post,
} from "../helpers/interfaces.ts";
function mapPostRow(row: Row): Post {
const [
posts_uuid,
user_id,
created_at,
post_text,
post_type,
likes,
comments,
] = row;
return {
posts_uuid: Number(posts_uuid),
user_id: Number(user_id),
created_at: String(created_at),
post_text: String(post_text),
post_type: String(post_type),
likes: Number(likes),
comments: Number(comments),
};
}
function mapCommentRow(row: Row): Comments {
const [
comment_id,
post_id,
author_user_id,
date_created_at,
text,
likes,
] = row;
return {
comment_id: Number(comment_id),
post_id: Number(post_id),
author_user_id: Number(author_user_id),
date_created_at: String(date_created_at),
text: String(text),
likes: Number(likes),
};
}
function mapChatRow(row: Row): Chat {
const [chat_id, chat_name, participants, created_at] = row;
return {
chat_id: Number(chat_id),
chat_name: String(chat_name),
participants: String(participants),
created_at: String(created_at),
};
}
function mapMessageRow(row: Row): Message {
const [message_id, chat_id, sender_id, content, timestamp] = row;
return {
message_id: Number(message_id),
chat_id: Number(chat_id),
sender_id: Number(sender_id),
content: String(content),
timestamp: String(timestamp),
};
}
function mapAccountRow(row: Row): Accounts {
const [
user_id,
user_group,
bio,
displayname,
username,
user_email,
password,
password_salt,
firstname,
surname,
account_created,
blocked_users,
followers,
following,
contacts,
] = row;
return {
user_id: Number(user_id),
user_group: String(user_group),
bio: String(bio),
displayname: String(displayname),
username: String(username),
user_email: String(user_email),
password: String(password),
password_salt: String(password_salt),
firstname: String(firstname),
surname: String(surname),
account_created: String(account_created),
blocked_users: String(blocked_users),
followers: String(followers),
following: String(following),
contacts: String(contacts),
};
}
export {
mapAccountRow,
mapChatRow,
mapCommentRow,
mapMessageRow,
mapPostRow
};