Skip to content

Commit

Permalink
FEAT: v1.0.0 release!
Browse files Browse the repository at this point in the history
Since this version, we can call OPENAI's API by langchaingo

Note: Docs for this version is not completed yet, but I will write it
ASAP!

Signed-off-by: daz-3ux <[email protected]>
  • Loading branch information
Daz-3ux committed Oct 26, 2023
1 parent fd5471b commit 278d195
Show file tree
Hide file tree
Showing 26 changed files with 1,016 additions and 1,054 deletions.
12 changes: 8 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@
# dazBlog
dazBlog 是一个基于 Go 语言开发的博客系统,其目的是为了学习 Go 语言,同时也是为了学习如何开发一个完整的项目。
dazBlog 是一个基于 Go 语言开发的博客系统
使用了 `Golang` + `Gin` + `MySQL` + `Docker`

## Features
- 使用了简洁架构,目录结构规范清晰
- 使用众多常用 Go 包
- 具备认证 (JWT) 以及授权 (Casbin) 功能
- 具备认证 (Gin JWT) 以及授权 (Casbin) 功能
- 独立封装 log, error 包
- 使用 Makefile 高效管理项目
- 静态代码检查
Expand All @@ -14,7 +15,7 @@ dazBlog 是一个基于 Go 语言开发的博客系统,其目的是为了学
- 优雅关停,中间件,跨域,异常恢复
- 使用 MariaDB 存储数据
- RESTful API 设计规范以及 OpenAPI 3.0/Swagger 2.0 API 文档
- 使用 Docker 部署项目
- 支持 Docker 部署
- 完善的文档

## Installation
Expand Down Expand Up @@ -61,7 +62,7 @@ realdaz/dazblog

## Documentation
### 实现功能
[openAPI文档](api/openapi/openapi.yaml)
[openAPI文档](api/openapi/openapi.yaml)
[Postman文档](https://documenter.getpostman.com/view/30435589/2s9YR83t3M)
- 用户管理
- 用户注册
Expand All @@ -71,6 +72,7 @@ realdaz/dazblog
- 更新用户信息
- 修改用户密码
- 注销用户
- 基于 MySQL 触发器会自动删除用户所有博客并清除权限
- 博客管理
- 创建博客
- 获取博客列表
Expand Down Expand Up @@ -105,5 +107,7 @@ realdaz/dazblog
### HTTPS 的使用
[使用HTTPS](./docs/devel/zh-CN/conversions/https.md)

---

## License
[MIT](https://choosealicense.com/licenses/mit/)
131 changes: 92 additions & 39 deletions configs/dBlog.sql
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
--
-- Host: 127.0.0.1 Database: dazblog
-- ------------------------------------------------------
-- Server version 10.11.5-MariaDB-1:10.11.5+maria~ubu2204
-- Server version 11.1.2-MariaDB-1:11.1.2+maria~ubu2204

/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
Expand All @@ -21,61 +21,114 @@
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;

--
-- Current Database: `dazblog`
-- Table structure for table `ai`
--

/*!40000 DROP DATABASE IF EXISTS `dazblog`*/;
DROP TABLE IF EXISTS `ai`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `ai` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`username` varchar(30) NOT NULL,
`postID` varchar(100) NOT NULL,
`content` longtext NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `postID` (`postID`)
) ENGINE=InnoDB AUTO_INCREMENT=13 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
/*!40101 SET character_set_client = @saved_cs_client */;

CREATE DATABASE /*!32312 IF NOT EXISTS*/ `dazblog` /*!40100 DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci */;
--
-- Dumping data for table `ai`
--

USE `dazblog`;
LOCK TABLES `ai` WRITE;
/*!40000 ALTER TABLE `ai` DISABLE KEYS */;
/*!40000 ALTER TABLE `ai` ENABLE KEYS */;
UNLOCK TABLES;

--
-- Table structure for table `post`
-- Table structure for table `posts`
--

DROP TABLE IF EXISTS posts;
DROP TABLE IF EXISTS `posts`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `post` (
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
`username` varchar(30) NOT NULL,
`postID` varchar(100) NOT NULL,
`title` varchar(150) NOT NULL,
`content` longtext NOT NULL,
`createdAt` timestamp NOT NULL DEFAULT current_timestamp(),
`updatedAt` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
PRIMARY KEY (`id`),
UNIQUE KEY `postID` (`postID`),
KEY `idx_username` (`username`),
CONSTRAINT `fk_post_username` FOREIGN KEY (`username`) REFERENCES users (`username`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
CREATE TABLE `posts` (
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
`username` varchar(30) NOT NULL,
`postID` varchar(100) NOT NULL,
`title` varchar(150) NOT NULL,
`content` longtext NOT NULL,
`createdAt` timestamp NOT NULL DEFAULT current_timestamp(),
`updatedAt` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
PRIMARY KEY (`id`),
UNIQUE KEY `postID` (`postID`),
KEY `idx_username` (`username`),
CONSTRAINT `fk_post_username` FOREIGN KEY (`username`) REFERENCES `users` (`username`) ON DELETE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
/*!40101 SET character_set_client = @saved_cs_client */;

--
-- Table structure for table `user`
-- Dumping data for table `posts`
--

DROP TABLE IF EXISTS users;
LOCK TABLES `posts` WRITE;
/*!40000 ALTER TABLE `posts` DISABLE KEYS */;
/*!40000 ALTER TABLE `posts` ENABLE KEYS */;
UNLOCK TABLES;
/*!50003 SET @saved_cs_client = @@character_set_client */ ;
/*!50003 SET @saved_cs_results = @@character_set_results */ ;
/*!50003 SET @saved_col_connection = @@collation_connection */ ;
/*!50003 SET character_set_client = utf8mb4 */ ;
/*!50003 SET character_set_results = utf8mb4 */ ;
/*!50003 SET collation_connection = utf8mb4_general_ci */ ;
/*!50003 SET @saved_sql_mode = @@sql_mode */ ;
/*!50003 SET sql_mode = 'IGNORE_SPACE,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION' */ ;
DELIMITER ;;
/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER delete_ai_record
AFTER DELETE ON posts FOR EACH ROW
BEGIN
DELETE FROM ai WHERE ai.postID = OLD.postID;
END */;;
DELIMITER ;
/*!50003 SET sql_mode = @saved_sql_mode */ ;
/*!50003 SET character_set_client = @saved_cs_client */ ;
/*!50003 SET character_set_results = @saved_cs_results */ ;
/*!50003 SET collation_connection = @saved_col_connection */ ;

--
-- Table structure for table `users`
--

DROP TABLE IF EXISTS `users`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `user` (
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
`postcount` int(11) NOT NULL DEFAULT 0,
`username` varchar(30) NOT NULL,
`password` varchar(255) NOT NULL,
`nickname` varchar(30) NOT NULL,
`email` varchar(320) NOT NULL,
`gender` enum('Male','Female','Other') DEFAULT NULL,
`phone` varchar(16) DEFAULT NULL,
`qq` varchar(16) DEFAULT NULL,
`createdAt` timestamp NOT NULL DEFAULT current_timestamp(),
`updatedAt` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
PRIMARY KEY (`id`),
UNIQUE KEY `username` (`username`),
UNIQUE KEY `email` (`email`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
CREATE TABLE `users` (
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
`postcount` int(11) NOT NULL DEFAULT 0,
`username` varchar(30) NOT NULL,
`password` varchar(255) NOT NULL,
`nickname` varchar(30) NOT NULL,
`email` varchar(320) NOT NULL,
`gender` enum('Male','Female','Other') DEFAULT NULL,
`phone` varchar(16) DEFAULT NULL,
`qq` varchar(16) DEFAULT NULL,
`createdAt` timestamp NOT NULL DEFAULT current_timestamp(),
`updatedAt` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
PRIMARY KEY (`id`),
UNIQUE KEY `username` (`username`),
UNIQUE KEY `email` (`email`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
/*!40101 SET character_set_client = @saved_cs_client */;

--
-- Dumping data for table `users`
--

LOCK TABLES `users` WRITE;
/*!40000 ALTER TABLE `users` DISABLE KEYS */;
/*!40000 ALTER TABLE `users` ENABLE KEYS */;
UNLOCK TABLES;
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;

/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
Expand All @@ -86,4 +139,4 @@ CREATE TABLE `user` (
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;

-- Dump completed on 2023-10-16 21:27:31
-- Dump completed on 2023-10-26 18:58:52
2 changes: 1 addition & 1 deletion configs/dazBlog.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -35,4 +35,4 @@ log:
disable-stacktrace: false
level: debug
format: console
output-paths: [stdout, /var/log/dazblog.log]
output-paths: [stdout]
148 changes: 148 additions & 0 deletions configs/mysql.dump
Original file line number Diff line number Diff line change
@@ -0,0 +1,148 @@
-- MariaDB dump 10.19-11.1.2-MariaDB, for Linux (x86_64)
--
-- Host: 127.0.0.1 Database: dazblog
-- ------------------------------------------------------
-- Server version 11.1.2-MariaDB-1:11.1.2+maria~ubu2204

/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8mb4 */;
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
/*!40103 SET TIME_ZONE='+00:00' */;
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;

--
-- Table structure for table `ai`
--

DROP TABLE IF EXISTS `ai`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `ai` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`username` varchar(30) NOT NULL,
`postID` varchar(100) NOT NULL,
`content` longtext NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `postID` (`postID`)
) ENGINE=InnoDB AUTO_INCREMENT=14 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
/*!40101 SET character_set_client = @saved_cs_client */;

--
-- Dumping data for table `ai`
--

LOCK TABLES `ai` WRITE;
/*!40000 ALTER TABLE `ai` DISABLE KEYS */;
/*!40000 ALTER TABLE `ai` ENABLE KEYS */;
UNLOCK TABLES;

--
-- Table structure for table `casbin_rule`
--

DROP TABLE IF EXISTS `casbin_rule`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `casbin_rule` (
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
`ptype` varchar(100) DEFAULT NULL,
`v0` varchar(100) DEFAULT NULL,
`v1` varchar(100) DEFAULT NULL,
`v2` varchar(100) DEFAULT NULL,
`v3` varchar(100) DEFAULT NULL,
`v4` varchar(100) DEFAULT NULL,
`v5` varchar(100) DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `idx_casbin_rule` (`ptype`,`v0`,`v1`,`v2`,`v3`,`v4`,`v5`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
/*!40101 SET character_set_client = @saved_cs_client */;

--
-- Dumping data for table `casbin_rule`
--

LOCK TABLES `casbin_rule` WRITE;
/*!40000 ALTER TABLE `casbin_rule` DISABLE KEYS */;
/*!40000 ALTER TABLE `casbin_rule` ENABLE KEYS */;
UNLOCK TABLES;

--
-- Table structure for table `posts`
--

DROP TABLE IF EXISTS `posts`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `posts` (
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
`username` varchar(30) NOT NULL,
`postID` varchar(100) NOT NULL,
`title` varchar(150) NOT NULL,
`content` longtext NOT NULL,
`createdAt` timestamp NOT NULL DEFAULT current_timestamp(),
`updatedAt` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
PRIMARY KEY (`id`),
UNIQUE KEY `postID` (`postID`),
KEY `idx_username` (`username`),
CONSTRAINT `fk_post_username` FOREIGN KEY (`username`) REFERENCES `users` (`username`) ON DELETE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
/*!40101 SET character_set_client = @saved_cs_client */;

--
-- Dumping data for table `posts`
--

LOCK TABLES `posts` WRITE;
/*!40000 ALTER TABLE `posts` DISABLE KEYS */;
/*!40000 ALTER TABLE `posts` ENABLE KEYS */;
UNLOCK TABLES;

--
-- Table structure for table `users`
--

DROP TABLE IF EXISTS `users`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `users` (
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
`postcount` int(11) NOT NULL DEFAULT 0,
`username` varchar(30) NOT NULL,
`password` varchar(255) NOT NULL,
`nickname` varchar(30) NOT NULL,
`email` varchar(320) NOT NULL,
`gender` enum('Male','Female','Other') DEFAULT NULL,
`phone` varchar(16) DEFAULT NULL,
`qq` varchar(16) DEFAULT NULL,
`createdAt` timestamp NOT NULL DEFAULT current_timestamp(),
`updatedAt` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
PRIMARY KEY (`id`),
UNIQUE KEY `username` (`username`),
UNIQUE KEY `email` (`email`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
/*!40101 SET character_set_client = @saved_cs_client */;

--
-- Dumping data for table `users`
--

LOCK TABLES `users` WRITE;
/*!40000 ALTER TABLE `users` DISABLE KEYS */;
/*!40000 ALTER TABLE `users` ENABLE KEYS */;
UNLOCK TABLES;
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;

/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;

-- Dump completed on 2023-10-26 19:30:53
Loading

0 comments on commit 278d195

Please sign in to comment.