Add more user serialization

This commit is contained in:
Jesse Wierzbinski 2023-09-10 17:54:14 -10:00
parent 636f2ffff8
commit 416a7186d1
No known key found for this signature in database
GPG key ID: F9A1E418934E40B0
3 changed files with 64 additions and 2 deletions

View file

@ -1,4 +1,8 @@
import { getConfig, getHost } from "@config";
import { BaseEntity, Column, CreateDateColumn, Entity, PrimaryGeneratedColumn, UpdateDateColumn } from "typeorm"; import { BaseEntity, Column, CreateDateColumn, Entity, PrimaryGeneratedColumn, UpdateDateColumn } from "typeorm";
import { Account } from "~types/entities/account";
const config = getConfig();
@Entity({ @Entity({
name: "users", name: "users",
@ -7,15 +11,59 @@ export class User extends BaseEntity {
@PrimaryGeneratedColumn("uuid") @PrimaryGeneratedColumn("uuid")
id!: string; id!: string;
@Column("varchar") @Column("varchar", {
unique: true,
})
username!: string; username!: string;
@Column("varchar") @Column("varchar")
password!: string; password!: string;
@Column("varchar", {
unique: true,
})
email!: string;
@Column("varchar", {
default: "",
})
bio!: string;
@CreateDateColumn() @CreateDateColumn()
created_at!: Date; created_at!: Date;
@UpdateDateColumn() @UpdateDateColumn()
updated_at!: Date; updated_at!: Date;
toAccount(): Account {
return {
acct: `@${this.username}@${getHost()}`,
avatar: "",
avatar_static: "",
bot: false,
created_at: this.created_at.toISOString(),
display_name: "",
followers_count: 0,
following_count: 0,
group: false,
header: "",
header_static: "",
id: this.id,
locked: false,
moved: null,
noindex: false,
note: this.bio,
suspended: false,
url: `${config.http.base_url}/@${this.username}`,
username: this.username,
emojis: [],
fields: [],
limited: false,
source: undefined,
statuses_count: 0,
discoverable: undefined,
role: undefined,
mute_expires_at: undefined,
}
}
} }

View file

@ -1,3 +1,5 @@
import { getConfig } from "@config";
const router = new Bun.FileSystemRouter({ const router = new Bun.FileSystemRouter({
style: "nextjs", style: "nextjs",
dir: process.cwd() + "/server/api", dir: process.cwd() + "/server/api",
@ -5,8 +7,10 @@ const router = new Bun.FileSystemRouter({
console.log("[+] Starting FediProject..."); console.log("[+] Starting FediProject...");
const config = getConfig();
Bun.serve({ Bun.serve({
port: 8653, port: config.http.port,
hostname: "0.0.0.0", // defaults to "0.0.0.0" hostname: "0.0.0.0", // defaults to "0.0.0.0"
async fetch(req) { async fetch(req) {
const matchedRoute = router.match(req); const matchedRoute = router.match(req);

View file

@ -8,9 +8,19 @@ export interface ConfigType {
password: string; password: string;
database: string; database: string;
} }
http: {
port: number;
base_url: string;
}
[ key: string ]: unknown; [ key: string ]: unknown;
} }
export const getConfig = () => { export const getConfig = () => {
return data as ConfigType; return data as ConfigType;
} }
export const getHost = () => {
const url = new URL(getConfig().http.base_url);
return url.host;
}