diff --git a/.env.example b/.env.example index 1aa9f66..bf36a73 100644 --- a/.env.example +++ b/.env.example @@ -1,5 +1,7 @@ +PORT=3000 + DB_HOST=127.0.0.1 DB_PORT=3306 -DB_DATABASE=auth +DB_DATABASE=test DB_USERNAME=root DB_PASSWORD= \ No newline at end of file diff --git a/README.md b/README.md index 5882520..531420a 100644 --- a/README.md +++ b/README.md @@ -3,5 +3,5 @@ Steps to run this project: 1. Run `npm i` command -2. Setup database settings inside `database.ts` file +2. Setup database settings inside `typeorm.ts` file 3. Run `npm start` command diff --git a/main.ts b/main.ts index a8ca5f3..c8726e1 100644 --- a/main.ts +++ b/main.ts @@ -1,21 +1,12 @@ -import express from 'express'; -import logger from 'morgan' import './src/config/env' -const app = express(); +import './src/routes/main' +import app from './src/config/express' -import indexRouter from './src/routes/index' -import usersRouter from './src/routes/users' +const port = process.env.PORT || 3000 -app.use(logger('dev')); -app.use(express.json()); -app.use(express.urlencoded({ extended: false })); -// app.use(express.static(path.join(__dirname, 'public'))); - -app.use('/', indexRouter); -app.use('/users', usersRouter); - -let port = 3000 app.listen(port, () => { - console.log(`App listening on port ${port}`) -}) + console.log(`Server is running at http://0.0.0.0:${port}`) + console.log(`You can visit http://localhost:${port}`) + console.log(`Press CTRL-C to stop \n`) +}) \ No newline at end of file diff --git a/package.json b/package.json index 04eb49c..e3078a1 100644 --- a/package.json +++ b/package.json @@ -21,7 +21,7 @@ "scripts": { "start": "ts-node main.ts", "typeorm": "typeorm-ts-node-commonjs", - "migrate": "typeorm-ts-node-commonjs migration:run -d src/config/database.ts", - "migrate:rollback": "typeorm-ts-node-commonjs migration:revert -d src/config/database.ts" + "migrate": "typeorm-ts-node-commonjs migration:run -d src/config/typeorm.ts", + "migrate:rollback": "typeorm-ts-node-commonjs migration:revert -d src/config/typeorm.ts" } } diff --git a/src/config/express.ts b/src/config/express.ts new file mode 100644 index 0000000..1d9b2d1 --- /dev/null +++ b/src/config/express.ts @@ -0,0 +1,11 @@ +import express from 'express'; +import logger from 'morgan' + +const app = express(); + +app.use(logger('dev')); +app.use(express.json()); +app.use(express.urlencoded({ extended: false })); + +export default app; + diff --git a/src/config/index.ts b/src/config/index.ts deleted file mode 100644 index 7c765e5..0000000 --- a/src/config/index.ts +++ /dev/null @@ -1,20 +0,0 @@ -import { AppDataSource } from "./database" -import { User } from "../entity/User" - -AppDataSource.initialize().then(async () => { - - console.log("Inserting a new user into the database...") - const user = new User() - user.firstName = "Timber" - user.lastName = "Saw" - user.age = 25 - await AppDataSource.manager.save(user) - console.log("Saved a new user with id: " + user.id) - - console.log("Loading users from the database...") - const users = await AppDataSource.manager.find(User) - console.log("Loaded users: ", users) - - console.log("Here you can setup and run express / fastify / any other framework.") - -}).catch(error => console.log(error)) diff --git a/src/config/manager.ts b/src/config/manager.ts new file mode 100644 index 0000000..2067543 --- /dev/null +++ b/src/config/manager.ts @@ -0,0 +1,7 @@ +import typeorm from "./typeorm"; + +typeorm.initialize().then(async () => { + console.log("Datasource initialized.") +}).catch(error => console.log(error)) + +export default typeorm.manager \ No newline at end of file diff --git a/src/config/database.ts b/src/config/typeorm.ts similarity index 74% rename from src/config/database.ts rename to src/config/typeorm.ts index 31f80d7..19caf47 100644 --- a/src/config/database.ts +++ b/src/config/typeorm.ts @@ -1,20 +1,21 @@ import "reflect-metadata" import { DataSource } from "typeorm" -// import { User } from "../entity/User"/ - import "./env" -export const AppDataSource = new DataSource({ +const typeorm = new DataSource({ type: "mysql", host: process.env.DB_HOST, port: Number(process.env.DB_PORT), username: process.env.DB_USERNAME, password: process.env.DB_PASSWORD, database: process.env.DB_DATABASE, - synchronize: true, + synchronize: false, logging: false, - // entities: [User], entities: ["src/entity/*.ts"], migrations: ["src/migration/*.ts"], subscribers: [], }) + +export default typeorm + + diff --git a/src/controller/User.ts b/src/controller/User.ts new file mode 100644 index 0000000..bf101d6 --- /dev/null +++ b/src/controller/User.ts @@ -0,0 +1,29 @@ +import {Request, Response} from "express"; +import {User} from "../entity/User"; +import manager from "../config/manager"; + +class UserController { + public async index(request: Request, response: Response) { + + + const user = new User() + user.name = "Timber" + user.email = "Saw@test.test" + await manager.save(user) + + user.name = "update" + await manager.save(user) + + return response.json({ + message: 'Hello World! From user' + }) + + } + public async create(request: Request, response: Response) { + return response.json({ + message: 'Hello World! From user' + }) + } +} + +export default UserController \ No newline at end of file diff --git a/src/entity/User.ts b/src/entity/User.ts index 5969f30..43d3563 100644 --- a/src/entity/User.ts +++ b/src/entity/User.ts @@ -1,6 +1,7 @@ import { Entity, PrimaryGeneratedColumn, Column } from "typeorm" -@Entity() +@Entity("users") + export class User { @PrimaryGeneratedColumn() diff --git a/src/routes/index.ts b/src/routes/index.ts index 2ba62b7..4e852be 100644 --- a/src/routes/index.ts +++ b/src/routes/index.ts @@ -3,7 +3,11 @@ const router = Router() /* GET home page. */ router.get('/', function(req, res, next) { - // res.render('index', { title: 'Express' }); + + + // user + + res.json({ message: 'Hello World!' }) diff --git a/src/routes/main.ts b/src/routes/main.ts new file mode 100644 index 0000000..f5b9201 --- /dev/null +++ b/src/routes/main.ts @@ -0,0 +1,9 @@ +// 添加其他的路由文件 +import app from "../config/express"; +import indexRouter from "./index"; +import usersRouter from "./users"; + +app.use('/', indexRouter); +app.use('/users', usersRouter); + + diff --git a/src/routes/users.ts b/src/routes/users.ts index d48fddb..52148de 100644 --- a/src/routes/users.ts +++ b/src/routes/users.ts @@ -1,9 +1,11 @@ import {Router} from 'express' const router = Router() +import UserController from '../controller/User' + +const user = new UserController() + /* GET users listing. */ -router.get('/', function(req, res, next) { - res.send('respond with a resource'); -}); +router.get('/', user.index); export default router \ No newline at end of file