合併輸出
This commit is contained in:
		
							
								
								
									
										14
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										14
									
								
								README.md
									
									
									
									
									
								
							@@ -4,13 +4,13 @@ ai 繪圖服務端(快速重構)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
TEST:
 | 
					TEST:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
- [ ] [/api/users](/api/users)
 | 
					- [x] GET [/api/users](/api/users) 用戶列表
 | 
				
			||||||
- [ ] [/api/sessions](/api/sessions)
 | 
					- [x] GET [/api/sessions](/api/sessions) 會話列表
 | 
				
			||||||
- [ ] [/api/servers](/api/servers)
 | 
					- [x] GET [/api/servers](/api/servers) 服務器列表
 | 
				
			||||||
- [ ] [/api/models](/api/models)
 | 
					- [x] GET [/api/models](/api/models) 模型列表
 | 
				
			||||||
- [ ] [/api/images](/api/images)
 | 
					- [x] GET [/api/images](/api/images) 圖片列表
 | 
				
			||||||
- [ ] [/api/tasks](/api/tasks)
 | 
					- [x] GET [/api/tasks](/api/tasks) 任務列表
 | 
				
			||||||
- [ ] [/api/tags](/api/tags)
 | 
					- [ ] GET [/api/tags](/api/tags) 標籤列表
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
列表接口:
 | 
					列表接口:
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -3,6 +3,7 @@ package models
 | 
				
			|||||||
import (
 | 
					import (
 | 
				
			||||||
	"encoding/json"
 | 
						"encoding/json"
 | 
				
			||||||
	"log"
 | 
						"log"
 | 
				
			||||||
 | 
						"net/http"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
type ListView struct {
 | 
					type ListView struct {
 | 
				
			||||||
@@ -13,7 +14,7 @@ type ListView struct {
 | 
				
			|||||||
	List     []interface{} `json:"list"`
 | 
						List     []interface{} `json:"list"`
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// 輸出JSON給瀏覽器
 | 
					// 轉換爲JSON並返回
 | 
				
			||||||
func (listview *ListView) ToJSON() []byte {
 | 
					func (listview *ListView) ToJSON() []byte {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// 即使list爲空,也要返回空的JSON數組
 | 
						// 即使list爲空,也要返回空的JSON數組
 | 
				
			||||||
@@ -29,3 +30,9 @@ func (listview *ListView) ToJSON() []byte {
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
	return b
 | 
						return b
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// 直接輸出JSON給瀏覽器
 | 
				
			||||||
 | 
					func (listview *ListView) WriteJSON(w http.ResponseWriter) {
 | 
				
			||||||
 | 
						w.Header().Set("Content-Type", "application/json; charset=utf-8")
 | 
				
			||||||
 | 
						w.Write(listview.ToJSON())
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -12,7 +12,7 @@ type Tag struct {
 | 
				
			|||||||
	UpdatedAt string `json:"updated_at"`
 | 
						UpdatedAt string `json:"updated_at"`
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (tag *Tag) Create() error {
 | 
					func (tag *Tag) Create(name string) error {
 | 
				
			||||||
	db, err := configs.GetDB()
 | 
						db, err := configs.GetDB()
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		log.Println(err)
 | 
							log.Println(err)
 | 
				
			||||||
@@ -25,7 +25,7 @@ func (tag *Tag) Create() error {
 | 
				
			|||||||
		return err
 | 
							return err
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	defer stmt.Close()
 | 
						defer stmt.Close()
 | 
				
			||||||
	result, err := stmt.Exec(tag.Name, tag.CreatedAt, tag.UpdatedAt)
 | 
						result, err := stmt.Exec(name, tag.CreatedAt, tag.UpdatedAt)
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		log.Println(err)
 | 
							log.Println(err)
 | 
				
			||||||
		return err
 | 
							return err
 | 
				
			||||||
@@ -139,3 +139,44 @@ func GetTagByName(name string) (*Tag, error) {
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
	return &tag, nil
 | 
						return &tag, nil
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func QueryTags(page, pagesize int) (list []interface{}) {
 | 
				
			||||||
 | 
						db, err := configs.GetDB()
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							log.Println(err)
 | 
				
			||||||
 | 
							return nil
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						defer db.Close()
 | 
				
			||||||
 | 
						rows, err := db.Query("SELECT * FROM tags LIMIT ?, ?", page, pagesize)
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							log.Println(err)
 | 
				
			||||||
 | 
							return nil
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						defer rows.Close()
 | 
				
			||||||
 | 
						for rows.Next() {
 | 
				
			||||||
 | 
							var tag Tag
 | 
				
			||||||
 | 
							err := rows.Scan(&tag.ID, &tag.Name, &tag.CreatedAt, &tag.UpdatedAt)
 | 
				
			||||||
 | 
							if err != nil {
 | 
				
			||||||
 | 
								log.Println(err)
 | 
				
			||||||
 | 
								return nil
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							list = append(list, tag)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return list
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func CountTags() (count int) {
 | 
				
			||||||
 | 
						db, err := configs.GetDB()
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							log.Println(err)
 | 
				
			||||||
 | 
							return 0
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						defer db.Close()
 | 
				
			||||||
 | 
						row := db.QueryRow("SELECT COUNT(*) FROM tags")
 | 
				
			||||||
 | 
						err = row.Scan(&count)
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							log.Println(err)
 | 
				
			||||||
 | 
							return 0
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return count
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -18,8 +18,7 @@ func ImagesGet(w http.ResponseWriter, r *http.Request) {
 | 
				
			|||||||
	listview.List = models.QueryImages(listview.Page, listview.PageSize)
 | 
						listview.List = models.QueryImages(listview.Page, listview.PageSize)
 | 
				
			||||||
	listview.Total = models.CountImages()
 | 
						listview.Total = models.CountImages()
 | 
				
			||||||
	listview.Next = listview.Page*listview.PageSize < listview.Total
 | 
						listview.Next = listview.Page*listview.PageSize < listview.Total
 | 
				
			||||||
	w.Header().Set("Content-Type", "application/json; charset=utf-8")
 | 
						listview.WriteJSON(w)
 | 
				
			||||||
	w.Write(listview.ToJSON())
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func ImagesPost(w http.ResponseWriter, r *http.Request) {
 | 
					func ImagesPost(w http.ResponseWriter, r *http.Request) {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -22,8 +22,7 @@ func ModelsGet(w http.ResponseWriter, r *http.Request) {
 | 
				
			|||||||
	listview.List = models.QueryModels(listview.Page, listview.PageSize)
 | 
						listview.List = models.QueryModels(listview.Page, listview.PageSize)
 | 
				
			||||||
	listview.Total = models.CountModels()
 | 
						listview.Total = models.CountModels()
 | 
				
			||||||
	listview.Next = listview.Page*listview.PageSize < listview.Total
 | 
						listview.Next = listview.Page*listview.PageSize < listview.Total
 | 
				
			||||||
	w.Header().Set("Content-Type", "application/json; charset=utf-8")
 | 
						listview.WriteJSON(w)
 | 
				
			||||||
	w.Write(listview.ToJSON())
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func ModelsPost(w http.ResponseWriter, r *http.Request) {
 | 
					func ModelsPost(w http.ResponseWriter, r *http.Request) {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -15,8 +15,7 @@ func ServersGet(w http.ResponseWriter, r *http.Request) {
 | 
				
			|||||||
	listview.List = models.QueryServers(listview.Page, listview.PageSize)
 | 
						listview.List = models.QueryServers(listview.Page, listview.PageSize)
 | 
				
			||||||
	listview.Total = models.CountServers()
 | 
						listview.Total = models.CountServers()
 | 
				
			||||||
	listview.Next = listview.Page*listview.PageSize < listview.Total
 | 
						listview.Next = listview.Page*listview.PageSize < listview.Total
 | 
				
			||||||
	w.Header().Set("Content-Type", "application/json; charset=utf-8")
 | 
						listview.WriteJSON(w)
 | 
				
			||||||
	w.Write(listview.ToJSON())
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func ServersPost(w http.ResponseWriter, r *http.Request) {
 | 
					func ServersPost(w http.ResponseWriter, r *http.Request) {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -16,8 +16,7 @@ func SessionsGet(w http.ResponseWriter, r *http.Request) {
 | 
				
			|||||||
	listview.List = models.QuerySessions(listview.Page, listview.PageSize)
 | 
						listview.List = models.QuerySessions(listview.Page, listview.PageSize)
 | 
				
			||||||
	listview.Total = models.CountSessions()
 | 
						listview.Total = models.CountSessions()
 | 
				
			||||||
	listview.Next = listview.Page*listview.PageSize < listview.Total
 | 
						listview.Next = listview.Page*listview.PageSize < listview.Total
 | 
				
			||||||
	w.Header().Set("Content-Type", "application/json; charset=utf-8")
 | 
						listview.WriteJSON(w)
 | 
				
			||||||
	w.Write(listview.ToJSON())
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// 創建會話
 | 
					// 創建會話
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										51
									
								
								routers/tags.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										51
									
								
								routers/tags.go
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,51 @@
 | 
				
			|||||||
 | 
					package routers
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import (
 | 
				
			||||||
 | 
						"encoding/json"
 | 
				
			||||||
 | 
						"fmt"
 | 
				
			||||||
 | 
						"io/ioutil"
 | 
				
			||||||
 | 
						"main/models"
 | 
				
			||||||
 | 
						"main/utils"
 | 
				
			||||||
 | 
						"net/http"
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// 獲取標籤列表
 | 
				
			||||||
 | 
					func TagsGet(w http.ResponseWriter, r *http.Request) {
 | 
				
			||||||
 | 
						var listview models.ListView
 | 
				
			||||||
 | 
						listview.Page = utils.ParamInt(r.URL.Query().Get("page"), 1)
 | 
				
			||||||
 | 
						listview.PageSize = utils.ParamInt(r.URL.Query().Get("pageSize"), 10)
 | 
				
			||||||
 | 
						listview.List = models.QueryTags(listview.Page, listview.PageSize)
 | 
				
			||||||
 | 
						listview.Total = models.CountTags()
 | 
				
			||||||
 | 
						listview.Next = listview.Page*listview.PageSize < listview.Total
 | 
				
			||||||
 | 
						listview.WriteJSON(w)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// 創建標籤
 | 
				
			||||||
 | 
					func TagsPost(w http.ResponseWriter, r *http.Request) {
 | 
				
			||||||
 | 
						var form struct {
 | 
				
			||||||
 | 
							Name string `json:"name"`
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						body, err := ioutil.ReadAll(r.Body)
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							fmt.Println(err)
 | 
				
			||||||
 | 
							return
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						defer r.Body.Close()
 | 
				
			||||||
 | 
						if err = json.Unmarshal(body, &form); err != nil {
 | 
				
			||||||
 | 
							fmt.Println(err)
 | 
				
			||||||
 | 
							return
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						// 創建標籤
 | 
				
			||||||
 | 
						var tag models.Tag
 | 
				
			||||||
 | 
						if err := tag.Create(form.Name); err != nil {
 | 
				
			||||||
 | 
							fmt.Println(err)
 | 
				
			||||||
 | 
							return
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						// 返回信息
 | 
				
			||||||
 | 
						w.Header().Set("Content-Type", "application/json; charset=utf-8")
 | 
				
			||||||
 | 
						w.Write(utils.ToJSON(tag))
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// 獲取標籤
 | 
				
			||||||
 | 
					func TagsItemGet(w http.ResponseWriter, r *http.Request) {
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -20,8 +20,7 @@ func TasksGet(w http.ResponseWriter, r *http.Request) {
 | 
				
			|||||||
	listview.List = models.QueryTasks(listview.Page, listview.PageSize)
 | 
						listview.List = models.QueryTasks(listview.Page, listview.PageSize)
 | 
				
			||||||
	listview.Total = models.CountTasks()
 | 
						listview.Total = models.CountTasks()
 | 
				
			||||||
	listview.Next = listview.Page*listview.PageSize < listview.Total
 | 
						listview.Next = listview.Page*listview.PageSize < listview.Total
 | 
				
			||||||
	w.Header().Set("Content-Type", "application/json; charset=utf-8")
 | 
						listview.WriteJSON(w)
 | 
				
			||||||
	w.Write(listview.ToJSON())
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func TasksPost(w http.ResponseWriter, r *http.Request) {
 | 
					func TasksPost(w http.ResponseWriter, r *http.Request) {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -19,8 +19,7 @@ func UsersGet(w http.ResponseWriter, r *http.Request) {
 | 
				
			|||||||
	listview.List = models.QueryUsers(listview.Page, listview.PageSize)
 | 
						listview.List = models.QueryUsers(listview.Page, listview.PageSize)
 | 
				
			||||||
	listview.Total = models.CountUsers()
 | 
						listview.Total = models.CountUsers()
 | 
				
			||||||
	listview.Next = listview.Page*listview.PageSize < listview.Total
 | 
						listview.Next = listview.Page*listview.PageSize < listview.Total
 | 
				
			||||||
	w.Header().Set("Content-Type", "application/json; charset=utf-8")
 | 
						listview.WriteJSON(w)
 | 
				
			||||||
	w.Write(listview.ToJSON())
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// 創建用戶
 | 
					// 創建用戶
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user