diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..637d92c --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +.idea/ +node_modules/ \ No newline at end of file diff --git a/app.js b/app.js new file mode 100644 index 0000000..199c4e2 --- /dev/null +++ b/app.js @@ -0,0 +1,22 @@ +const Koa = require('koa'); +const app = new Koa(); +const router = require('./routes/main'); +// const path = require('path'); +const server = require('koa-static2'); +// const views = require('koa-views'); + +// 静态资源目录对于相对入口文件index.js的路径 +const staticPath = './public'; +app.use(server(staticPath)); + + +// 加载模板引擎 +// app.use(views(path.join(__dirname, './public/views'), { +// extension: 'ejs' +// })); + + +app.use(router.routes()) + .use(router.allowedMethods()); +app.listen(3000); +console.log('[demo] start-quick is starting at port 3000'); diff --git a/app/Controller/PostController.js b/app/Controller/PostController.js new file mode 100644 index 0000000..6725039 --- /dev/null +++ b/app/Controller/PostController.js @@ -0,0 +1,30 @@ +let DB = require('./../../utils/dbUtil'); + +const PostController = { + + async getList (ctx) { + // let list = DB.select('posts','*'); + // ctx.body = ; + ctx.body = await DB.select('posts','*') ; + }, + + async create () { + + }, + + async update () { + + }, + + async find () { + + }, + + async del () { + + }, + +}; + + +module.exports = PostController; \ No newline at end of file diff --git a/config.js b/config.js new file mode 100644 index 0000000..82a7628 --- /dev/null +++ b/config.js @@ -0,0 +1,15 @@ +const config = { + + port: 3001, + + database: { + DATABASE: 'omblog_v2', + USERNAME: 'root', + PASSWORD: 'root', + PORT: '3306', + HOST: 'localhost', + prefix: 'om_' + } +}; + +module.exports = config; \ No newline at end of file diff --git a/database/categories.json b/database/categories.json new file mode 100644 index 0000000..0c75cf5 --- /dev/null +++ b/database/categories.json @@ -0,0 +1,12 @@ +[ + { + "id": 1, + "p_id": 0, + "name": "类别名称" + }, + { + "id": 2, + "p_id": 1, + "name": "类别名称" + } +] \ No newline at end of file diff --git a/database/posts.json b/database/posts.json new file mode 100644 index 0000000..0e505a9 --- /dev/null +++ b/database/posts.json @@ -0,0 +1,15 @@ +[ + { + "id": 1, + "title": "标题", + "content": "内容详情", + "desc": "描述", + "u_id": "提交的用户", + "category_id": "所属目录", + "tags": [], + "type": "默认是0 只有后台可见,发布后1 删除 2", + "published_at": "发布时间", + "created_at": "创建时间", + "deleted_at": "删除时间" + } +] \ No newline at end of file diff --git a/database/tags.json b/database/tags.json new file mode 100644 index 0000000..620999e --- /dev/null +++ b/database/tags.json @@ -0,0 +1,7 @@ +[ + { + "id": 1, + "tag_name": "javascript", + "tag_desc": "描述" + } +] \ No newline at end of file diff --git a/database/tasg.sql b/database/tasg.sql new file mode 100644 index 0000000..8dafec7 --- /dev/null +++ b/database/tasg.sql @@ -0,0 +1,6 @@ +CREATE TABLE IF NOT EXISTS `user_info` ( + `id` int(11) NOT NULL AUTO_INCREMENT, # 标签ID + `tag_name` varchar(255) NOT NULL, # 标签名称 + `tag_desc` varchar(255) DEFAULT '', # 标签描述 + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; \ No newline at end of file diff --git a/database/users.json b/database/users.json new file mode 100644 index 0000000..117843b --- /dev/null +++ b/database/users.json @@ -0,0 +1,9 @@ +[ + { + "id": 1, + "email": "email", + "username": "fdb", + "password": "密码", + "avatar": "" + } +] \ No newline at end of file diff --git a/database/users.sql b/database/users.sql new file mode 100644 index 0000000..ec0c232 --- /dev/null +++ b/database/users.sql @@ -0,0 +1,10 @@ +CREATE TABLE IF NOT EXISTS `user_info` ( + `id` int(11) NOT NULL AUTO_INCREMENT, # 用户ID + `email` varchar(255) NOT NULL, # 邮箱地址 + `password` varchar(255) NOT NULL, # 密码 + `nickname` varchar(255) DEFAULT NULL, # 用户昵称 + `detail_info` longtext DEFAULT NULL, # 详细信息 + `created_at` int(11) DEFAULT NULL, # 创建时间 + `modified_at` int(11) DEFAULT NULL, # 修改时间 + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; \ No newline at end of file diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..4d8cf07 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,498 @@ +{ + "name": "koa2-api", + "version": "1.0.0", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "accepts": { + "version": "1.3.5", + "resolved": "http://registry.npm.taobao.org/accepts/download/accepts-1.3.5.tgz", + "integrity": "sha1-63d99gEXI6OxTopywIBcjoZ0a9I=", + "requires": { + "mime-types": "2.1.18", + "negotiator": "0.6.1" + } + }, + "any-promise": { + "version": "1.3.0", + "resolved": "http://registry.npm.taobao.org/any-promise/download/any-promise-1.3.0.tgz", + "integrity": "sha1-q8av7tzqUugJzcA3au0845Y10X8=" + }, + "babel-runtime": { + "version": "6.26.0", + "resolved": "http://registry.npm.taobao.org/babel-runtime/download/babel-runtime-6.26.0.tgz", + "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", + "requires": { + "core-js": "2.5.4", + "regenerator-runtime": "0.11.1" + } + }, + "bignumber.js": { + "version": "4.0.4", + "resolved": "http://registry.npm.taobao.org/bignumber.js/download/bignumber.js-4.0.4.tgz", + "integrity": "sha1-fED1q80tZiOre5loLufbgbEYiaQ=" + }, + "co": { + "version": "4.6.0", + "resolved": "http://registry.npm.taobao.org/co/download/co-4.6.0.tgz", + "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=" + }, + "content-disposition": { + "version": "0.5.2", + "resolved": "http://registry.npm.taobao.org/content-disposition/download/content-disposition-0.5.2.tgz", + "integrity": "sha1-DPaLud318r55YcOoUXjLhdunjLQ=" + }, + "content-type": { + "version": "1.0.4", + "resolved": "http://registry.npm.taobao.org/content-type/download/content-type-1.0.4.tgz", + "integrity": "sha1-4TjMdeBAxyexlm/l5fjJruJW/js=" + }, + "cookies": { + "version": "0.7.1", + "resolved": "http://registry.npm.taobao.org/cookies/download/cookies-0.7.1.tgz", + "integrity": "sha1-fIphX1SBxhq58WyDNzG8uPZjuZs=", + "requires": { + "depd": "1.1.2", + "keygrip": "1.0.2" + } + }, + "core-js": { + "version": "2.5.4", + "resolved": "http://registry.npm.taobao.org/core-js/download/core-js-2.5.4.tgz", + "integrity": "sha1-8si/GB8qgLkvNgEhQpzmOi8K6uA=" + }, + "core-util-is": { + "version": "1.0.2", + "resolved": "http://registry.npm.taobao.org/core-util-is/download/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" + }, + "debug": { + "version": "3.1.0", + "resolved": "http://registry.npm.taobao.org/debug/download/debug-3.1.0.tgz", + "integrity": "sha1-W7WgZyYotkFJVmuhaBnmFRjGcmE=", + "requires": { + "ms": "2.0.0" + } + }, + "deep-equal": { + "version": "1.0.1", + "resolved": "http://registry.npm.taobao.org/deep-equal/download/deep-equal-1.0.1.tgz", + "integrity": "sha1-9dJgKStmDghO/0zbyfCK0yR0SLU=" + }, + "delegates": { + "version": "1.0.0", + "resolved": "http://registry.npm.taobao.org/delegates/download/delegates-1.0.0.tgz", + "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=" + }, + "depd": { + "version": "1.1.2", + "resolved": "http://registry.npm.taobao.org/depd/download/depd-1.1.2.tgz", + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=" + }, + "destroy": { + "version": "1.0.4", + "resolved": "http://registry.npm.taobao.org/destroy/download/destroy-1.0.4.tgz", + "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" + }, + "ee-first": { + "version": "1.1.1", + "resolved": "http://registry.npm.taobao.org/ee-first/download/ee-first-1.1.1.tgz", + "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" + }, + "error-inject": { + "version": "1.0.0", + "resolved": "http://registry.npm.taobao.org/error-inject/download/error-inject-1.0.0.tgz", + "integrity": "sha1-4rPZG1Su1nLzCdlQ0VSFD6EdTzc=" + }, + "escape-html": { + "version": "1.0.3", + "resolved": "http://registry.npm.taobao.org/escape-html/download/escape-html-1.0.3.tgz", + "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" + }, + "fresh": { + "version": "0.5.2", + "resolved": "http://registry.npm.taobao.org/fresh/download/fresh-0.5.2.tgz", + "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=" + }, + "http-assert": { + "version": "1.3.0", + "resolved": "http://registry.npm.taobao.org/http-assert/download/http-assert-1.3.0.tgz", + "integrity": "sha1-oxpc+IyHPsu1eWkH1NbxMujAHko=", + "requires": { + "deep-equal": "1.0.1", + "http-errors": "1.6.3" + } + }, + "http-errors": { + "version": "1.6.3", + "resolved": "http://registry.npm.taobao.org/http-errors/download/http-errors-1.6.3.tgz", + "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", + "requires": { + "depd": "1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": "1.5.0" + } + }, + "inherits": { + "version": "2.0.3", + "resolved": "http://registry.npm.taobao.org/inherits/download/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" + }, + "is-generator-function": { + "version": "1.0.7", + "resolved": "http://registry.npm.taobao.org/is-generator-function/download/is-generator-function-1.0.7.tgz", + "integrity": "sha1-0hMuUpuwAAp/gHlNS99c1eWBNSI=" + }, + "isarray": { + "version": "0.0.1", + "resolved": "http://registry.npm.taobao.org/isarray/download/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" + }, + "keygrip": { + "version": "1.0.2", + "resolved": "http://registry.npm.taobao.org/keygrip/download/keygrip-1.0.2.tgz", + "integrity": "sha1-rTKXxVcGneqLz+ek+kkbdcXd65E=" + }, + "koa": { + "version": "2.5.0", + "resolved": "http://registry.npm.taobao.org/koa/download/koa-2.5.0.tgz", + "integrity": "sha1-sPvh4ZXkOydYigT9C+DdrsosFUw=", + "requires": { + "accepts": "1.3.5", + "content-disposition": "0.5.2", + "content-type": "1.0.4", + "cookies": "0.7.1", + "debug": "3.1.0", + "delegates": "1.0.0", + "depd": "1.1.2", + "destroy": "1.0.4", + "error-inject": "1.0.0", + "escape-html": "1.0.3", + "fresh": "0.5.2", + "http-assert": "1.3.0", + "http-errors": "1.6.3", + "is-generator-function": "1.0.7", + "koa-compose": "4.0.0", + "koa-convert": "1.2.0", + "koa-is-json": "1.0.0", + "mime-types": "2.1.18", + "on-finished": "2.3.0", + "only": "0.0.2", + "parseurl": "1.3.2", + "statuses": "1.5.0", + "type-is": "1.6.16", + "vary": "1.1.2" + } + }, + "koa-compose": { + "version": "4.0.0", + "resolved": "http://registry.npm.taobao.org/koa-compose/download/koa-compose-4.0.0.tgz", + "integrity": "sha1-KAClE9nDYe8NY4UrA45Pby1adzw=" + }, + "koa-convert": { + "version": "1.2.0", + "resolved": "http://registry.npm.taobao.org/koa-convert/download/koa-convert-1.2.0.tgz", + "integrity": "sha1-2kCHXfSd4FOQmNFwC1CCDOvNIdA=", + "requires": { + "co": "4.6.0", + "koa-compose": "3.2.1" + }, + "dependencies": { + "koa-compose": { + "version": "3.2.1", + "resolved": "http://registry.npm.taobao.org/koa-compose/download/koa-compose-3.2.1.tgz", + "integrity": "sha1-qFzLQLfZhtjlo0Wzoazo6rz1Tec=", + "requires": { + "any-promise": "1.3.0" + } + } + } + }, + "koa-is-json": { + "version": "1.0.0", + "resolved": "http://registry.npm.taobao.org/koa-is-json/download/koa-is-json-1.0.0.tgz", + "integrity": "sha1-JzwH7c3Ljfaiwat9We52SRRR7BQ=" + }, + "koa-router": { + "version": "7.4.0", + "resolved": "http://registry.npm.taobao.org/koa-router/download/koa-router-7.4.0.tgz", + "integrity": "sha1-ruH3rcAtXLMdfWdGXJ6syCXoxeA=", + "requires": { + "debug": "3.1.0", + "http-errors": "1.6.3", + "koa-compose": "3.2.1", + "methods": "1.1.2", + "path-to-regexp": "1.7.0", + "urijs": "1.19.1" + }, + "dependencies": { + "koa-compose": { + "version": "3.2.1", + "resolved": "http://registry.npm.taobao.org/koa-compose/download/koa-compose-3.2.1.tgz", + "integrity": "sha1-qFzLQLfZhtjlo0Wzoazo6rz1Tec=", + "requires": { + "any-promise": "1.3.0" + } + } + } + }, + "koa-send": { + "version": "3.3.0", + "resolved": "http://registry.npm.taobao.org/koa-send/download/koa-send-3.3.0.tgz", + "integrity": "sha1-WkriRVZGgMbs9geeknX6UXOoYdw=", + "requires": { + "co": "4.6.0", + "debug": "2.6.9", + "mz": "2.7.0", + "resolve-path": "1.4.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "http://registry.npm.taobao.org/debug/download/debug-2.6.9.tgz", + "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=", + "requires": { + "ms": "2.0.0" + } + } + } + }, + "koa-static2": { + "version": "0.1.8", + "resolved": "http://registry.npm.taobao.org/koa-static2/download/koa-static2-0.1.8.tgz", + "integrity": "sha1-46EX+5ApEw+MTKHjYqkYr6tS8vw=", + "requires": { + "babel-runtime": "6.26.0", + "koa-send": "3.3.0" + } + }, + "media-typer": { + "version": "0.3.0", + "resolved": "http://registry.npm.taobao.org/media-typer/download/media-typer-0.3.0.tgz", + "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=" + }, + "methods": { + "version": "1.1.2", + "resolved": "http://registry.npm.taobao.org/methods/download/methods-1.1.2.tgz", + "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=" + }, + "mime-db": { + "version": "1.33.0", + "resolved": "http://registry.npm.taobao.org/mime-db/download/mime-db-1.33.0.tgz", + "integrity": "sha1-o0kgUKXLm2NFBUHjnZeI0icng9s=" + }, + "mime-types": { + "version": "2.1.18", + "resolved": "http://registry.npm.taobao.org/mime-types/download/mime-types-2.1.18.tgz", + "integrity": "sha1-bzI/YKg9ERRvgx/xH9ZuL+VQO7g=", + "requires": { + "mime-db": "1.33.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "http://registry.npm.taobao.org/ms/download/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + }, + "mysql": { + "version": "2.15.0", + "resolved": "http://registry.npm.taobao.org/mysql/download/mysql-2.15.0.tgz", + "integrity": "sha1-6haEEVY0Po8uR/yJhexBzdlXO1w=", + "requires": { + "bignumber.js": "4.0.4", + "readable-stream": "2.3.3", + "safe-buffer": "5.1.1", + "sqlstring": "2.3.0" + } + }, + "mz": { + "version": "2.7.0", + "resolved": "http://registry.npm.taobao.org/mz/download/mz-2.7.0.tgz", + "integrity": "sha1-lQCAV6Vsr63CvGPd5/n/aVWUjjI=", + "requires": { + "any-promise": "1.3.0", + "object-assign": "4.1.1", + "thenify-all": "1.6.0" + } + }, + "negotiator": { + "version": "0.6.1", + "resolved": "http://registry.npm.taobao.org/negotiator/download/negotiator-0.6.1.tgz", + "integrity": "sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk=" + }, + "object-assign": { + "version": "4.1.1", + "resolved": "http://registry.npm.taobao.org/object-assign/download/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" + }, + "on-finished": { + "version": "2.3.0", + "resolved": "http://registry.npm.taobao.org/on-finished/download/on-finished-2.3.0.tgz", + "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", + "requires": { + "ee-first": "1.1.1" + } + }, + "only": { + "version": "0.0.2", + "resolved": "http://registry.npm.taobao.org/only/download/only-0.0.2.tgz", + "integrity": "sha1-Kv3oTQPlC5qO3EROMGEKcCle37Q=" + }, + "parseurl": { + "version": "1.3.2", + "resolved": "http://registry.npm.taobao.org/parseurl/download/parseurl-1.3.2.tgz", + "integrity": "sha1-/CidTtiZMRlGDBViUyYs3I3mW/M=" + }, + "path": { + "version": "0.12.7", + "resolved": "http://registry.npm.taobao.org/path/download/path-0.12.7.tgz", + "integrity": "sha1-1NwqUGxM4hl+tIHr/NWzbAFAsQ8=", + "requires": { + "process": "0.11.10", + "util": "0.10.3" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "http://registry.npm.taobao.org/path-is-absolute/download/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" + }, + "path-to-regexp": { + "version": "1.7.0", + "resolved": "http://registry.npm.taobao.org/path-to-regexp/download/path-to-regexp-1.7.0.tgz", + "integrity": "sha1-Wf3g9DW62suhA6hOnTvGTpa5k30=", + "requires": { + "isarray": "0.0.1" + } + }, + "process": { + "version": "0.11.10", + "resolved": "http://registry.npm.taobao.org/process/download/process-0.11.10.tgz", + "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=" + }, + "process-nextick-args": { + "version": "1.0.7", + "resolved": "http://registry.npm.taobao.org/process-nextick-args/download/process-nextick-args-1.0.7.tgz", + "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=" + }, + "readable-stream": { + "version": "2.3.3", + "resolved": "http://registry.npm.taobao.org/readable-stream/download/readable-stream-2.3.3.tgz", + "integrity": "sha1-No8lEtefnUb9/HE0mueHi7weuVw=", + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "1.0.7", + "safe-buffer": "5.1.1", + "string_decoder": "1.0.3", + "util-deprecate": "1.0.2" + }, + "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "http://registry.npm.taobao.org/isarray/download/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + } + } + }, + "regenerator-runtime": { + "version": "0.11.1", + "resolved": "http://registry.npm.taobao.org/regenerator-runtime/download/regenerator-runtime-0.11.1.tgz", + "integrity": "sha1-vgWtf5v30i4Fb5cmzuUBf78Z4uk=" + }, + "resolve-path": { + "version": "1.4.0", + "resolved": "http://registry.npm.taobao.org/resolve-path/download/resolve-path-1.4.0.tgz", + "integrity": "sha1-xL2p9e+y/OZSR4c6s2u02DT+Fvc=", + "requires": { + "http-errors": "1.6.3", + "path-is-absolute": "1.0.1" + } + }, + "safe-buffer": { + "version": "5.1.1", + "resolved": "http://registry.npm.taobao.org/safe-buffer/download/safe-buffer-5.1.1.tgz", + "integrity": "sha1-iTMSr2myEj3vcfV4iQAWce6yyFM=" + }, + "setprototypeof": { + "version": "1.1.0", + "resolved": "http://registry.npm.taobao.org/setprototypeof/download/setprototypeof-1.1.0.tgz", + "integrity": "sha1-0L2FU2iHtv58DYGMuWLZ2RxU5lY=" + }, + "sqlstring": { + "version": "2.3.0", + "resolved": "http://registry.npm.taobao.org/sqlstring/download/sqlstring-2.3.0.tgz", + "integrity": "sha1-UluKT9Jtb3GqYegipsr5dtMa0qg=" + }, + "statuses": { + "version": "1.5.0", + "resolved": "http://registry.npm.taobao.org/statuses/download/statuses-1.5.0.tgz", + "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=" + }, + "string_decoder": { + "version": "1.0.3", + "resolved": "http://registry.npm.taobao.org/string_decoder/download/string_decoder-1.0.3.tgz", + "integrity": "sha1-D8Z9fBQYJd6UKC3VNr7GubzoYKs=", + "requires": { + "safe-buffer": "5.1.1" + } + }, + "thenify": { + "version": "3.3.0", + "resolved": "http://registry.npm.taobao.org/thenify/download/thenify-3.3.0.tgz", + "integrity": "sha1-5p44obq+lpsBCCB5eLn2K4hgSDk=", + "requires": { + "any-promise": "1.3.0" + } + }, + "thenify-all": { + "version": "1.6.0", + "resolved": "http://registry.npm.taobao.org/thenify-all/download/thenify-all-1.6.0.tgz", + "integrity": "sha1-GhkY1ALY/D+Y+/I02wvMjMEOlyY=", + "requires": { + "thenify": "3.3.0" + } + }, + "type-is": { + "version": "1.6.16", + "resolved": "http://registry.npm.taobao.org/type-is/download/type-is-1.6.16.tgz", + "integrity": "sha1-+JzjQVQcZysl7nrjxz3uOyvlAZQ=", + "requires": { + "media-typer": "0.3.0", + "mime-types": "2.1.18" + } + }, + "urijs": { + "version": "1.19.1", + "resolved": "http://registry.npm.taobao.org/urijs/download/urijs-1.19.1.tgz", + "integrity": "sha1-Ww/1MMDL3oOG9jQiNbpcpumV0lo=" + }, + "util": { + "version": "0.10.3", + "resolved": "http://registry.npm.taobao.org/util/download/util-0.10.3.tgz", + "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", + "requires": { + "inherits": "2.0.1" + }, + "dependencies": { + "inherits": { + "version": "2.0.1", + "resolved": "http://registry.npm.taobao.org/inherits/download/inherits-2.0.1.tgz", + "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=" + } + } + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "http://registry.npm.taobao.org/util-deprecate/download/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" + }, + "vary": { + "version": "1.1.2", + "resolved": "http://registry.npm.taobao.org/vary/download/vary-1.1.2.tgz", + "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=" + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..18b1764 --- /dev/null +++ b/package.json @@ -0,0 +1,18 @@ +{ + "name": "koa2-api", + "version": "1.0.0", + "description": "", + "main": "app.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "author": "", + "license": "ISC", + "dependencies": { + "koa": "^2.5.0", + "koa-router": "^7.4.0", + "koa-static2": "^0.1.8", + "mysql": "^2.15.0", + "path": "^0.12.7" + } +} diff --git a/routes/admin.js b/routes/admin.js new file mode 100644 index 0000000..554e62a --- /dev/null +++ b/routes/admin.js @@ -0,0 +1,27 @@ +/** + * 后台接口子路由 + */ + +const Router = require('koa-router'); +const router = new Router(); +const PostController = require('./../app/Controller/PostController'); + +/** + * ====================== + * posts表相关操作路由 + * ====================== + */ +// 获取列表 +router.get('/post/getList', PostController.getList); +// 增加 +router.post('/post/create', PostController.create); +// 删除 +router.delete('/post/{id}', PostController.del); +// 更新 +router.put('/post/update', PostController.update); +// 通过ID获取详情 +router.get('/post/{id}', PostController.find); + + + +module.exports = router; \ No newline at end of file diff --git a/routes/api.js b/routes/api.js new file mode 100644 index 0000000..ad66827 --- /dev/null +++ b/routes/api.js @@ -0,0 +1,13 @@ +/** + * restful api 子路由 + */ + +const router = require('koa-router')() +const userInfoController = require('./../controllers/user-info') + +const routers = router + .get('/user/getUserInfo.json', userInfoController.getLoginUserInfo) + .post('/user/signIn.json', userInfoController.signIn) + .post('/user/signUp.json', userInfoController.signUp) + +module.exports = routers \ No newline at end of file diff --git a/routes/home.js b/routes/home.js new file mode 100644 index 0000000..e69de29 diff --git a/routes/index.js b/routes/index.js new file mode 100644 index 0000000..6fcda64 --- /dev/null +++ b/routes/index.js @@ -0,0 +1,40 @@ +const Router = require('koa-router'); +const router = new Router(); + + +router.get('/', async (ctx, next) => { + + // let title = 'hello koa2'; + // await ctx.render('index',{ + // title: title + // }); + // ctx.response.body = '

Hello World

'; + // let params = ctx.params; + // + // // 从上下文中直接获取 + // let ctx_query = ctx.query; + // + ctx.body = '

hello world!

' ; +}); +router.post('/users', (ctx, next) => { + // ... + ctx.body = {a:"a"}; +}); +router.put('/users/:id', (ctx, next) => { + let id = ctx.params.id; + // ... + ctx.body = 'post users ' + id; +}); +router.del('/users/:id', (ctx, next) => { + // ... +}); +router.all('/users/:id', (ctx, next) => { + // ... + ctx.response.redirect('/'); + ctx.response.body = 'Index Page'; +}); + + + +module.exports = router; + diff --git a/routes/main.js b/routes/main.js new file mode 100644 index 0000000..0e40c1c --- /dev/null +++ b/routes/main.js @@ -0,0 +1,18 @@ +/** + * 整合所有子路由 + */ + +const router = require('koa-router')(); + +// const home = require('./home'); +// const api = require('./api'); +const admin = require('./admin'); +// const work = require('./work'); +// const error = require('./error'); + +// router.use('/', home.routes(), home.allowedMethods()); +// router.use('/api', api.routes(), api.allowedMethods()); +router.use('/admin', admin.routes(), admin.allowedMethods()); +// router.use('/work', work.routes(), work.allowedMethods()); +// router.use('/error', error.routes(), error.allowedMethods()); +module.exports = router; \ No newline at end of file diff --git a/utils/dbUtil.js b/utils/dbUtil.js new file mode 100644 index 0000000..043b508 --- /dev/null +++ b/utils/dbUtil.js @@ -0,0 +1,89 @@ +const allConfig = require("./../config"); +const config = allConfig.database; +const mysql = require("mysql"); + +const pool = mysql.createPool({ + host : config.HOST, + user : config.USERNAME, + password : config.PASSWORD, + database : config.DATABASE +}); + +let query = function( sql, values ) { + + return new Promise(( resolve, reject ) => { + pool.getConnection(function(err, connection) { + if (err) { + resolve( err ) + } else { + connection.query(sql, values, ( err, rows) => { + + if ( err ) { + reject( err ) + } else { + resolve( rows ) + } + connection.release() + }) + } + }) + }) + +}; + +let createTable = function( sql ) { + return query( sql, [] ) +}; + + +let find = function( table, id ) { + let _sql = "SELECT * FROM ?? WHERE id = ? "; + return query( _sql, [ config.prefix + table, id ] ) +}; + + +let findDataByPage = function( table, keys, start, end ) { + let _sql = "SELECT ?? FROM ?? LIMIT ? , ?"; + return query( _sql, [keys, config.prefix + table, start, end ] ) +}; + + +let insert = function( table, values ) { + let _sql = "INSERT INTO ?? SET ?"; + return query( _sql, [ config.prefix + table, values ] ) +}; + + +let update = function( table, values, id ) { + let _sql = "UPDATE ?? SET ? WHERE id = ?"; + return query( _sql, [ config.prefix + table, values, id ] ) +}; + + +let del = function( table, id ) { + let _sql = "DELETE FROM ?? WHERE id = ?"; + return query( _sql, [ config.prefix + table, id ] ) +}; + + +let select = function( table, keys ) { + let _sql = "SELECT ?? FROM ?? "; + return query( _sql, [ keys, config.prefix + table ] ) +}; + +let count = function( table ) { + let _sql = "SELECT COUNT(*) AS total_count FROM ?? "; + return query( _sql, [ config.prefix + table ] ) +}; + +module.exports = { + query, + createTable, + find, + findDataByPage, + del, + insert, + update, + select, + count, +}; \ No newline at end of file