forked from hexbear-collective/hexbear
36 changed files with 182 additions and 236 deletions
-
16src/app.ts
-
4src/category/category.controller.ts
-
4src/category/category.model.ts
-
4src/comment/comment.controller.ts
-
4src/comment/comment.model.ts
-
4src/community/community.controller.ts
-
4src/community/community.model.ts
-
2src/database/knex.ts
-
6src/database/knexfile.ts
-
1src/database/migrations/initial_snapshot.ts
-
73src/database/seeds/00_user_test_data.ts
-
24src/database/seeds/01_site_test_data.ts
-
20src/database/seeds/02_category_test_data.ts
-
30src/database/seeds/03_community_test_data.ts
-
26src/database/seeds/04_post_test_data.ts
-
26src/database/seeds/05_comment_test_data.ts
-
24src/database/seeds/06_private-message_test_data.ts
-
2src/enums.ts
-
2src/images/images.service.ts
-
3src/lib/errors.ts
-
10src/lib/jwt.ts
-
4src/middleware/errors.middleware.ts
-
6src/middleware/user.middleware.ts
-
4src/post/post.controller.ts
-
4src/post/post.model.ts
-
4src/private-message/private-message.controller.ts
-
4src/private-message/private-message.model.ts
-
4src/site/site.controller.ts
-
4src/site/site.model.ts
-
4src/user/models/user-ban.model.ts
-
4src/user/models/user-mention.model.ts
-
4src/user/models/user-tag.model.ts
-
5src/user/models/user-token.model.ts
-
52src/user/models/user.model.ts
-
12src/user/user.controller.ts
-
14src/user/user.service.ts
@ -1,6 +1,4 @@ |
|||
import { Request, Response } from 'express'; |
|||
import { getCategoryList } from './category.model'; |
|||
|
|||
export const getCategories = async (req: Request, res: Response) => { |
|||
return res.json({ categories: await getCategoryList() }); |
|||
} |
|||
export const getCategories = async (req: Request, res: Response) => res.json({ categories: await getCategoryList() }); |
@ -1,6 +1,4 @@ |
|||
import { Request, Response } from 'express'; |
|||
import { getCommentList } from './comment.model'; |
|||
|
|||
export const getComments = async (req: Request, res: Response) => { |
|||
return res.json({ comments: await getCommentList() }); |
|||
} |
|||
export const getComments = async (req: Request, res: Response) => res.json({ comments: await getCommentList() }); |
@ -1,6 +1,4 @@ |
|||
import { Request, Response } from 'express'; |
|||
import { getCommunityList } from './community.model'; |
|||
|
|||
export const getCommunities = async (req: Request, res: Response) => { |
|||
return res.json({ communities: await getCommunityList() }); |
|||
} |
|||
export const getCommunities = async (req: Request, res: Response) => res.json({ communities: await getCommunityList() }); |
@ -1,4 +1,4 @@ |
|||
import Knex from 'knex'; |
|||
import { default as KnexConfig } from './knexfile'; |
|||
|
|||
export const knex = Knex(KnexConfig.development); |
|||
export const knex = Knex(KnexConfig.development); |
@ -1,41 +1,40 @@ |
|||
import * as Knex from 'knex'; |
|||
|
|||
export async function seed(knex: Knex): Promise<void> { |
|||
// Deletes ALL existing entries
|
|||
await knex('user_').del(); |
|||
// Deletes ALL existing entries
|
|||
await knex('user_').del(); |
|||
|
|||
// Inserts seed entries
|
|||
await knex('user_').insert([ |
|||
{ |
|||
id: 1, |
|||
name: 'marx', |
|||
preferred_username: 'karl', |
|||
password_encrypted: 'hunter2', |
|||
email: '[email protected]', |
|||
avatar: null, |
|||
theme: 'dark', |
|||
default_sort_type: 0, |
|||
default_listing_type: 0, |
|||
lang: 'english', |
|||
actor_id: 'http://localhost:8080/u/marx', |
|||
admin: true, |
|||
sitemod: true |
|||
}, |
|||
{ |
|||
id: 2, |
|||
name: 'hammer', |
|||
preferred_username: 'sickle', |
|||
password_encrypted: 'hunter1', |
|||
email: '[email protected]', |
|||
avatar: null, |
|||
theme: 'dark', |
|||
default_sort_type: 0, |
|||
default_listing_type: 0, |
|||
lang: 'english', |
|||
actor_id: 'http://localhost:8080/u/hammer', |
|||
admin: false, |
|||
sitemod: false |
|||
}, |
|||
]); |
|||
}; |
|||
|
|||
// Inserts seed entries
|
|||
await knex('user_').insert([ |
|||
{ |
|||
id: 1, |
|||
name: 'marx', |
|||
preferred_username: 'karl', |
|||
password_encrypted: 'hunter2', |
|||
email: '[email protected]', |
|||
avatar: null, |
|||
theme: 'dark', |
|||
default_sort_type: 0, |
|||
default_listing_type: 0, |
|||
lang: 'english', |
|||
actor_id: 'http://localhost:8080/u/marx', |
|||
admin: true, |
|||
sitemod: true, |
|||
}, |
|||
{ |
|||
id: 2, |
|||
name: 'hammer', |
|||
preferred_username: 'sickle', |
|||
password_encrypted: 'hunter1', |
|||
email: '[email protected]', |
|||
avatar: null, |
|||
theme: 'dark', |
|||
default_sort_type: 0, |
|||
default_listing_type: 0, |
|||
lang: 'english', |
|||
actor_id: 'http://localhost:8080/u/hammer', |
|||
admin: false, |
|||
sitemod: false, |
|||
}, |
|||
]); |
|||
} |
@ -1,16 +1,16 @@ |
|||
import * as Knex from 'knex'; |
|||
|
|||
export async function seed(knex: Knex): Promise<void> { |
|||
// Deletes ALL existing entries
|
|||
await knex('site').del(); |
|||
// Deletes ALL existing entries
|
|||
await knex('site').del(); |
|||
|
|||
// Inserts seed entries
|
|||
await knex('site').insert([ |
|||
{ |
|||
id: 1, |
|||
name: 'hexbear chat', |
|||
description: 'nothing but pig poop balls', |
|||
creator_id: 1 |
|||
}, |
|||
]); |
|||
}; |
|||
// Inserts seed entries
|
|||
await knex('site').insert([ |
|||
{ |
|||
id: 1, |
|||
name: 'hexbear chat', |
|||
description: 'nothing but pig poop balls', |
|||
creator_id: 1, |
|||
}, |
|||
]); |
|||
} |
@ -1,14 +1,14 @@ |
|||
import * as Knex from 'knex'; |
|||
|
|||
export async function seed(knex: Knex): Promise<void> { |
|||
// Deletes ALL existing entries
|
|||
await knex('category').del(); |
|||
// Deletes ALL existing entries
|
|||
await knex('category').del(); |
|||
|
|||
// Inserts seed entries
|
|||
await knex('category').insert([ |
|||
{ |
|||
id: 1, |
|||
name: 'Discussion' |
|||
}, |
|||
]); |
|||
}; |
|||
// Inserts seed entries
|
|||
await knex('category').insert([ |
|||
{ |
|||
id: 1, |
|||
name: 'Discussion', |
|||
}, |
|||
]); |
|||
} |
@ -1,19 +1,19 @@ |
|||
import * as Knex from 'knex'; |
|||
|
|||
export async function seed(knex: Knex): Promise<void> { |
|||
// Deletes ALL existing entries
|
|||
await knex('community').del(); |
|||
// Deletes ALL existing entries
|
|||
await knex('community').del(); |
|||
|
|||
// Inserts seed entries
|
|||
await knex('community').insert([ |
|||
{ |
|||
id: 1, |
|||
name: 'main', |
|||
description: 'watercooler chat', |
|||
title: 'Main', |
|||
creator_id: 1, |
|||
category_id: 1, |
|||
actor_id: 'http://localhost:8080/c/main' |
|||
}, |
|||
]); |
|||
}; |
|||
// Inserts seed entries
|
|||
await knex('community').insert([ |
|||
{ |
|||
id: 1, |
|||
name: 'main', |
|||
description: 'watercooler chat', |
|||
title: 'Main', |
|||
creator_id: 1, |
|||
category_id: 1, |
|||
actor_id: 'http://localhost:8080/c/main', |
|||
}, |
|||
]); |
|||
} |
@ -1,17 +1,17 @@ |
|||
import * as Knex from 'knex'; |
|||
|
|||
export async function seed(knex: Knex): Promise<void> { |
|||
// Deletes ALL existing entries
|
|||
await knex('post').del(); |
|||
// Deletes ALL existing entries
|
|||
await knex('post').del(); |
|||
|
|||
// Inserts seed entries
|
|||
await knex('post').insert([ |
|||
{ |
|||
id: 1, |
|||
name: 'Post Memes Here', |
|||
creator_id: 1, |
|||
community_id: 1, |
|||
ap_id: 'http://localhost:8080/post/1' |
|||
}, |
|||
]); |
|||
}; |
|||
// Inserts seed entries
|
|||
await knex('post').insert([ |
|||
{ |
|||
id: 1, |
|||
name: 'Post Memes Here', |
|||
creator_id: 1, |
|||
community_id: 1, |
|||
ap_id: 'http://localhost:8080/post/1', |
|||
}, |
|||
]); |
|||
} |
@ -1,17 +1,17 @@ |
|||
import * as Knex from 'knex'; |
|||
|
|||
export async function seed(knex: Knex): Promise<void> { |
|||
// Deletes ALL existing entries
|
|||
await knex('comment').del(); |
|||
// Deletes ALL existing entries
|
|||
await knex('comment').del(); |
|||
|
|||
// Inserts seed entries
|
|||
await knex('comment').insert([ |
|||
{ |
|||
id: 1, |
|||
creator_id: 1, |
|||
post_id: 1, |
|||
content: '_nice_', |
|||
ap_id: 'http://localhost:8080/comment/1' |
|||
}, |
|||
]); |
|||
}; |
|||
// Inserts seed entries
|
|||
await knex('comment').insert([ |
|||
{ |
|||
id: 1, |
|||
creator_id: 1, |
|||
post_id: 1, |
|||
content: '_nice_', |
|||
ap_id: 'http://localhost:8080/comment/1', |
|||
}, |
|||
]); |
|||
} |
@ -1,16 +1,16 @@ |
|||
import * as Knex from 'knex'; |
|||
|
|||
export async function seed(knex: Knex): Promise<void> { |
|||
// Deletes ALL existing entries
|
|||
await knex('private_message').del(); |
|||
// Deletes ALL existing entries
|
|||
await knex('private_message').del(); |
|||
|
|||
// Inserts seed entries
|
|||
await knex('private_message').insert([ |
|||
{ |
|||
id: 1, |
|||
creator_id: 1, |
|||
recipient_id: 2, |
|||
content: 'hello' |
|||
}, |
|||
]); |
|||
}; |
|||
// Inserts seed entries
|
|||
await knex('private_message').insert([ |
|||
{ |
|||
id: 1, |
|||
creator_id: 1, |
|||
recipient_id: 2, |
|||
content: 'hello', |
|||
}, |
|||
]); |
|||
} |
@ -1 +1 @@ |
|||
// stub for pictrs
|
|||
// stub for pictrs
|
@ -1,9 +1,10 @@ |
|||
export class HTTPError extends Error { |
|||
code: number; |
|||
|
|||
constructor(code: number, message: string) { |
|||
super(message); |
|||
this.code = code; |
|||
} |
|||
} |
|||
|
|||
export const Unauthorized_Error = new HTTPError(401, 'unauthorized'); |
|||
export const Unauthorized_Error = new HTTPError(401, 'unauthorized'); |
@ -1,9 +1,9 @@ |
|||
import { Request, Response, NextFunction } from 'express'; |
|||
import { HTTPError } from '../lib/errors'; |
|||
|
|||
export const errorHandler = async(err: HTTPError, req: Request, res: Response, next: NextFunction) => { |
|||
export const errorHandler = async (err: HTTPError, req: Request, res: Response, next: NextFunction) => { |
|||
if (err) { |
|||
res.status(err.code).json({ code: err.code, message: err.message }); |
|||
} |
|||
res.status(500).json({ code: 500, message: 'unexpected error' }); |
|||
} |
|||
}; |
@ -1,6 +1,4 @@ |
|||
import { Request, Response } from 'express'; |
|||
import { getPostList } from './post.model'; |
|||
|
|||
export const getPosts = async (req: Request, res: Response) => { |
|||
return res.json({ posts: await getPostList() }); |
|||
} |
|||
export const getPosts = async (req: Request, res: Response) => res.json({ posts: await getPostList() }); |
@ -1,6 +1,4 @@ |
|||
import { Request, Response } from 'express'; |
|||
import { getPrivateMessageList } from './private-message.model'; |
|||
|
|||
export const getPrivateMessages = async (req: Request, res: Response) => { |
|||
return res.json({ privateMessages: await getPrivateMessageList() }); |
|||
} |
|||
export const getPrivateMessages = async (req: Request, res: Response) => res.json({ privateMessages: await getPrivateMessageList() }); |
@ -1,6 +1,4 @@ |
|||
import { Request, Response } from 'express'; |
|||
import { getSiteDetail } from './site.model'; |
|||
|
|||
export const getSite = async (req: Request, res: Response) => { |
|||
return res.json({ site: await getSiteDetail() }); |
|||
} |
|||
export const getSite = async (req: Request, res: Response) => res.json({ site: await getSiteDetail() }); |
@ -1,18 +1,12 @@ |
|||
import { getUserView, UserView } from './models/user.model'; |
|||
|
|||
export const getSiteAdmins = (): Promise<UserView[]> => { |
|||
return getUserView({ admin: true }, true); |
|||
} |
|||
export const getSiteAdmins = (): Promise<UserView[]> => getUserView({ admin: true }, true); |
|||
|
|||
export const getSiteMods = (): Promise<UserView[]> => { |
|||
return getUserView({ sitemod: true }, true); |
|||
} |
|||
export const getSiteMods = (): Promise<UserView[]> => getUserView({ sitemod: true }, true); |
|||
|
|||
export const getBanned = (): Promise<UserView[]> => { |
|||
return getUserView({ banned: true }, true); |
|||
} |
|||
export const getBanned = (): Promise<UserView[]> => getUserView({ banned: true }, true); |
|||
|
|||
export const getUserSecure = async (userId: UserView['id']): Promise<UserView> => { |
|||
const userList = await getUserView({ id: userId }, true); |
|||
return userList[0]; |
|||
} |
|||
}; |
Write
Preview
Loading…
Cancel
Save
Reference in new issue