瀏覽代碼

게시판 최신 글 API 추가

https://github.com/openNAMU/openNAMU/issues/2051
잉여개발기 2 年之前
父節點
當前提交
3e133ddd6f
共有 11 個文件被更改,包括 132 次插入3 次删除
  1. 4 0
      app.py
  2. 2 0
      route/__init__.py
  3. 24 0
      route/go_api_bbs.py
  4. 二進制
      route_go/bin/main.amd64.bin
  5. 二進制
      route_go/bin/main.amd64.exe
  6. 二進制
      route_go/bin/main.arm64.bin
  7. 二進制
      route_go/bin/main.arm64.exe
  8. 2 0
      route_go/main.go
  9. 97 0
      route_go/route/api_bbs.go
  10. 1 1
      version.json
  11. 2 2
      views/main_css/js/route/editor.js

+ 4 - 0
app.py

@@ -683,6 +683,10 @@ app.route('/api/raw/<everything:name>', defaults = { 'db_set' : db_set_str })(ap
 
 app.route('/api/random', defaults = { 'db_set' : db_set_str })(api_w_random)
 
+app.route('/api/bbs/main', defaults = { 'db_set' : db_set_str })(api_bbs)
+app.route('/api/bbs/w/<int:bbs_num>', defaults = { 'db_set' : db_set_str })(api_bbs)
+app.route('/api/bbs/w/<int:bbs_num>/<int:page>', defaults = { 'db_set' : db_set_str })(api_bbs)
+
 app.route('/api/bbs/w/<sub_code>')(api_bbs_w_post)
 app.route('/api/bbs/w/comment/<sub_code>')(api_bbs_w_comment)
 app.route('/api/bbs/w/comment_one/<sub_code>')(api_bbs_w_comment)

+ 2 - 0
route/__init__.py

@@ -176,6 +176,8 @@ from route.go_api_search import api_search
 from route.go_api_recent_change import api_recent_change
 from route.go_api_recent_edit_request import api_recent_edit_request
 
+from route.go_api_bbs import api_bbs
+
 from route.go_api_topic import api_topic
 
 from route.go_api_w_raw import api_w_raw

+ 24 - 0
route/go_api_bbs.py

@@ -0,0 +1,24 @@
+from .tool.func import *
+
+def api_bbs(db_set, bbs_num = "", page = 1):
+    with get_db_connect() as conn:
+        other_set = {}
+        other_set["bbs_num"] = bbs_num
+        other_set["page"] = str(page)
+        other_set["ip"] = ip_check()
+        other_set = json.dumps(other_set)
+
+        if platform.system() == 'Linux':
+            if platform.machine() in ["AMD64", "x86_64"]:
+                data = subprocess.Popen([os.path.join(".", "route_go", "bin", "main.amd64.bin"), sys._getframe().f_code.co_name, db_set, other_set], stdout = subprocess.PIPE).communicate()[0]
+            else:
+                data = subprocess.Popen([os.path.join(".", "route_go", "bin", "main.arm64.bin"), sys._getframe().f_code.co_name, db_set, other_set], stdout = subprocess.PIPE).communicate()[0]
+        else:
+            if platform.machine() in ["AMD64", "x86_64"]:
+                data = subprocess.Popen([os.path.join(".", "route_go", "bin", "main.amd64.exe"), sys._getframe().f_code.co_name, db_set, other_set], stdout = subprocess.PIPE).communicate()[0]
+            else:
+                data = subprocess.Popen([os.path.join(".", "route_go", "bin", "main.arm64.exe"), sys._getframe().f_code.co_name, db_set, other_set], stdout = subprocess.PIPE).communicate()[0]
+
+        data = data.decode('utf8')
+
+        return flask.Response(response = data, status = 200, mimetype = 'application/json')

二進制
route_go/bin/main.amd64.bin


二進制
route_go/bin/main.amd64.exe


二進制
route_go/bin/main.arm64.bin


二進制
route_go/bin/main.arm64.exe


+ 2 - 0
route_go/main.go

@@ -26,5 +26,7 @@ func main() {
 		route.Api_recent_change(call_arg[1:])
 	} else if call_arg[0] == "api_recent_edit_request" {
 		route.Api_recent_edit_request(call_arg[1:])
+	} else if call_arg[0] == "api_bbs" {
+		route.Api_bbs(call_arg[1:])
 	}
 }

+ 97 - 0
route_go/route/api_bbs.go

@@ -0,0 +1,97 @@
+package route
+
+import (
+	"database/sql"
+	"encoding/json"
+	"fmt"
+	"opennamu/route/tool"
+	"strconv"
+)
+
+func Api_bbs(call_arg []string) {
+	db_set := map[string]string{}
+	json.Unmarshal([]byte(call_arg[0]), &db_set)
+
+	other_set := map[string]string{}
+	json.Unmarshal([]byte(call_arg[1]), &other_set)
+
+	db := tool.DB_connect(db_set)
+	if db == nil {
+		return
+	}
+	defer db.Close()
+
+	var rows *sql.Rows
+	if other_set["bbs_num"] == "" {
+		var err error
+
+		rows, err = db.Query(tool.DB_change(db_set, "select set_code, set_id from bbs_data where set_name = 'date' order by set_data desc limit 50"))
+		if err != nil {
+			return
+		}
+	} else {
+		page, _ := strconv.Atoi(other_set["page"])
+		num := 0
+		if page*50 > 0 {
+			num = page*50 - 50
+		}
+
+		stmt, err := db.Prepare(tool.DB_change(db_set, "select set_code, set_id from bbs_data where set_name = 'title' and set_id like ? order by set_code + 0 desc limit ?, 50"))
+		if err != nil {
+			return
+		}
+		defer stmt.Close()
+
+		rows, err = stmt.Query(other_set["bbs_num"], num)
+		if err != nil {
+			return
+		}
+	}
+	defer rows.Close()
+
+	var data_list []map[string]string
+
+	for rows.Next() {
+		temp_data := make(map[string]string)
+
+		var set_code string
+		var set_id string
+
+		err := rows.Scan(&set_code, &set_id)
+		if err != nil {
+			return
+		}
+
+		temp_data["set_code"] = set_code
+		temp_data["set_id"] = set_id
+
+		stmt, err := db.Prepare(tool.DB_change(db_set, "select set_name, set_data, set_code, set_id from bbs_data where set_code = ? and set_id = ?"))
+		if err != nil {
+			return
+		}
+		defer stmt.Close()
+
+		rows, err := stmt.Query(set_code, set_id)
+		if err != nil {
+			return
+		}
+		defer rows.Close()
+
+		for rows.Next() {
+			var set_name string
+			var set_data string
+
+			err := rows.Scan(&set_name, &set_data, &set_code, &set_id)
+			if err != nil {
+				return
+			}
+
+			temp_data[set_name] = set_data
+		}
+
+		data_list = append(data_list, temp_data)
+	}
+
+	json_data, _ := json.Marshal(data_list)
+	fmt.Print(string(json_data))
+}

+ 1 - 1
version.json

@@ -1,6 +1,6 @@
 {
     "beta" : {
-        "r_ver" : "v3.5.0-dev34",
+        "r_ver" : "v3.5.0-dev35",
         "c_ver" : "3500376",
         "s_ver" : "3500113"
     }

+ 2 - 2
views/main_css/js/route/editor.js

@@ -170,8 +170,8 @@ class PlaceholderContentWidget {
     static ID = 'editor.widget.placeholderHint';
 
     constructor(placeholder, editor) {
-		this.placeholder = placeholder;
-		this.editor = editor;
+        this.placeholder = placeholder;
+        this.editor = editor;
         // register a listener for editor code changes
         editor.onDidChangeModelContent(() => this.onDidChangeModelContent());
         // ensure that on initial load the placeholder is shown