feat(api-user): add basic User Entity and basic routing to fetch all users

This commit is contained in:
sct
2020-08-17 03:12:00 +00:00
parent ccfd223f0f
commit d902ef7277
9 changed files with 92 additions and 22 deletions

29
server/entity/User.ts Normal file
View File

@@ -0,0 +1,29 @@
import {
Entity,
PrimaryGeneratedColumn,
Column,
CreateDateColumn,
UpdateDateColumn,
} from 'typeorm';
@Entity()
export class User {
@PrimaryGeneratedColumn()
public id: number;
@Column({ unique: true })
public email: string;
@Column({ nullable: true })
public plexToken: string;
@CreateDateColumn()
public createdAt: Date;
@UpdateDateColumn()
public updatedAt: Date;
constructor(init?: Partial<User>) {
Object.assign(this, init);
}
}

View File

@@ -1,6 +1,7 @@
import express from 'express';
import next from 'next';
import { createConnection } from 'typeorm';
import routes from './routes';
const dev = process.env.NODE_ENV !== 'production';
const app = next({ dev });
@@ -12,9 +13,7 @@ app
.prepare()
.then(() => {
const server = express();
server.get('/api', (req, res) => {
res.json({ worked: true });
});
server.use('/api', routes);
server.get('*', (req, res) => handle(req, res));
const port = Number(process.env.PORT) || 3000;

15
server/routes/index.ts Normal file
View File

@@ -0,0 +1,15 @@
import { Router } from 'express';
import user from './user';
const router = Router();
router.use('/user', user);
router.get('/', (req, res) => {
return res.status(200).json({
api: 'Overseerr API',
version: '1.0',
});
});
export default router;

15
server/routes/user.ts Normal file
View File

@@ -0,0 +1,15 @@
import { Router } from 'express';
import { getRepository } from 'typeorm';
import { User } from '../entity/User';
const router = Router();
router.get('/', async (req, res) => {
const userRepository = getRepository(User);
const users = await userRepository.find();
return res.status(200).json(users);
});
export default router;

11
server/tsconfig.json Normal file
View File

@@ -0,0 +1,11 @@
{
"extends": "../tsconfig.json",
"compilerOptions": {
"module": "commonjs",
"outDir": "../dist",
"noEmit": false,
"strictPropertyInitialization": false,
"experimentalDecorators": true,
"emitDecoratorMetadata": true
}
}