diff --git a/FrontEnd/renderTable.js b/FrontEnd/renderTable.js
index 8a0ff48..47c709b 100644
--- a/FrontEnd/renderTable.js
+++ b/FrontEnd/renderTable.js
@@ -28,7 +28,7 @@ document.getElementById('getAssignment').addEventListener('click', function () {
cell.textContent = item.Name || item.ID;
// 优先判断 Access 条件
- if (item.Access < 5) {
+ if (item.Access <=3) {
cell.classList.add('cell_Moderator');
} else if (item.Note === 1) {
cell.classList.add('cell_SwitchOrRepay');
diff --git a/FrontEnd/testAssignment.html b/FrontEnd/testAssignment.html
index 66c7616..3224051 100644
--- a/FrontEnd/testAssignment.html
+++ b/FrontEnd/testAssignment.html
@@ -116,8 +116,8 @@ button:hover {
-
选择日期
-
如果不选择的日期的话,则自动获取今天的值班表
+
请选择日期
+
不选择日期则自动获取今天的值班表
diff --git a/database/database.go b/database/database.go
index e583dd9..799fc00 100644
--- a/database/database.go
+++ b/database/database.go
@@ -2,10 +2,12 @@ package db
import (
"fmt"
+ //"gorm.io/driver/postgres"
+ "os"
+
"gorm.io/driver/postgres"
"gorm.io/driver/sqlite"
"gorm.io/gorm"
- "os"
"zsxyww.com/scheduler/config"
"zsxyww.com/scheduler/model"
)
@@ -17,12 +19,12 @@ func Connect() {
case "SQLite":
connectSQLite()
case "PostgreSQL":
- //connectPGSQL()
+ connectPGSQL()
PGSQL()
default:
panic("DBType error")
}
- Main.AutoMigrate(&model.Member{}, &model.Tweak{})
+ //Main.AutoMigrate(&model.Member{}, &model.Tweak{})
}
func connectSQLite() {
@@ -33,6 +35,7 @@ func connectSQLite() {
os.Exit(1)
}
+ Main.AutoMigrate(&model.Member{}, &model.Tweak{})
}
func connectPGSQL() {
@@ -40,4 +43,5 @@ func connectPGSQL() {
if err != nil {
panic(err)
}
+ Main.AutoMigrate(&model.Member{}, &model.Tweak{})
}
diff --git a/database/model.go b/database/model.go
index 595abb7..9acb539 100644
--- a/database/model.go
+++ b/database/model.go
@@ -1,7 +1,10 @@
package db
import (
+ "github.com/jackc/pgx/v5/pgxpool"
"gorm.io/gorm"
)
var Main *gorm.DB //Main database connection
+
+var PGX *pgxpool.Pool
diff --git a/database/pgsql.go b/database/pgsql.go
new file mode 100644
index 0000000..9f6916e
--- /dev/null
+++ b/database/pgsql.go
@@ -0,0 +1,26 @@
+package db
+
+import (
+ "context"
+ "fmt"
+ "github.com/jackc/pgx/v5/pgxpool"
+ "os"
+ "zsxyww.com/scheduler/config"
+)
+
+// use pgx to connect
+func PGSQL() {
+ pgx, err := pgxpool.New(context.Background(), config.Default.DB.Path)
+ if err != nil {
+ fmt.Fprintf(os.Stderr, "Unable to create connection pool: %v\n", err)
+ os.Exit(1)
+ }
+ version := ""
+ if err := pgx.QueryRow(context.Background(), "SELECT version()").Scan(&version); err != nil {
+ fmt.Printf("Query failed: %v\n", err)
+ os.Exit(1)
+ }
+
+ fmt.Println("Connected to:", version)
+ PGX = pgx
+}
diff --git a/handler/init.go b/handler/init.go
deleted file mode 100644
index a974322..0000000
--- a/handler/init.go
+++ /dev/null
@@ -1,37 +0,0 @@
-package handler
-
-//
-// import (
-// "github.com/gocarina/gocsv"
-// "os"
-// "zsxyww.com/scheduler/config"
-// //"zsxyww.com/scheduler/database"
-// "zsxyww.com/scheduler/model"
-// )
-//
-// func init() {
-// allMember, err := loadMembers()
-// if err != nil {
-// panic(err)
-// }
-// _ = allMember
-// }
-//
-// func loadMembers() ([]model.Member, error) {
-// data, err := os.OpenFile(config.File, os.O_RDWR|os.O_CREATE, os.ModePerm)
-// if err != nil {
-// return nil, err
-// }
-// defer data.Close()
-//
-// var m []model.Member
-//
-// err = gocsv.UnmarshalFile(data, m)
-// if err != nil {
-// return nil, err
-// }
-// //for index, member := range *m {
-// // fmt.Printf("%v:%v\n", index, member) // for debug concerns
-// //}
-// return m, nil
-// }
diff --git a/handler/repay.go b/handler/repay.go
new file mode 100644
index 0000000..abeebd1
--- /dev/null
+++ b/handler/repay.go
@@ -0,0 +1 @@
+package handler
diff --git a/handler/test.go b/handler/test.go
new file mode 100644
index 0000000..3ab5827
--- /dev/null
+++ b/handler/test.go
@@ -0,0 +1,31 @@
+package handler
+
+import (
+ "context"
+ "github.com/jackc/pgx/v5"
+ "github.com/labstack/echo/v4"
+ "zsxyww.com/scheduler/database"
+ "zsxyww.com/scheduler/model"
+)
+
+var cxt = context.Background()
+
+func HandlerTest(i echo.Context) error {
+
+ switch i.QueryParam("acts") {
+ case "test":
+ if err := db.PGX.Ping(cxt); err != nil {
+ return i.String(500, err.Error())
+ }
+ return i.String(200, "ok")
+ case "select":
+ a, _ := db.PGX.Query(cxt, "select * from members")
+ result, err := pgx.CollectRows(a, pgx.RowToStructByName[model.Member])
+ if err != nil {
+ return i.String(500, err.Error())
+ }
+ return i.JSON(200, result)
+ default:
+ return i.String(200, "give arguments please")
+ }
+}
diff --git a/handler/unit/tweaks.go b/handler/unit/tweaks.go
index ffca8da..a669f06 100644
--- a/handler/unit/tweaks.go
+++ b/handler/unit/tweaks.go
@@ -1,46 +1,46 @@
+// CRUD的基础操作
package uo
import (
+ "zsxyww.com/scheduler/database"
"zsxyww.com/scheduler/model"
)
// 增加一项tweak
-func (uo *uoPrototype) addTweak(in *model.Tweak) error {
- _ = uo.c.Create(in)
- if uo.c.Error != nil {
- return uo.c.Error
- }
- return nil
+func AddTweak(in *model.Tweak) error {
+ result := db.Main.Create(in)
+ return result.Error
+
}
// 删除一项tweak
-func (uo *uoPrototype) deleteTweak(in *model.Tweak) error {
- if uo.c.Error != nil {
- return uo.c.Error
+func DeleteTweak(in *model.Tweak) error {
+ if db.Main.Error != nil {
+ return db.Main.Error
}
return nil
}
// 查询一些tweak,通过IssueID
-func (uo *uoPrototype) getTweakByIssueID(in *model.Tweak) (result []*model.Tweak, err error) {
- if uo.c.Error != nil {
- return nil, uo.c.Error
+func GetTweakByIssueID(in *model.Tweak) (result []*model.Tweak, err error) {
+ if db.Main.Error != nil {
+ return nil, db.Main.Error
}
return nil, nil
}
// 查询一些tweak,通过一个日期
-func (uo *uoPrototype) getTweakByTime(in *model.Tweak) (result []*model.Tweak, err error) {
- if uo.c.Error != nil {
- return nil, uo.c.Error
+func GetTweakByTime(in *model.Tweak) (result []*model.Tweak, err error) {
+ if db.Main.Error != nil {
+ return nil, db.Main.Error
}
return nil, nil
}
// 查询一些tweak,通过一个工号
-func (uo *uoPrototype) getTweakByID(in *model.Tweak) (result []*model.Tweak, err error) {
- if uo.c.Error != nil {
- return nil, uo.c.Error
+func GetTweakByID(in *model.Tweak) (result []*model.Tweak, err error) {
+ if db.Main.Error != nil {
+ return nil, db.Main.Error
}
return nil, nil
}
diff --git a/handler/unit/unit_entry.go b/handler/unit/unit_entry.go
deleted file mode 100644
index 5151a57..0000000
--- a/handler/unit/unit_entry.go
+++ /dev/null
@@ -1,16 +0,0 @@
-package uo
-
-import (
- "gorm.io/gorm"
- "zsxyww.com/scheduler/database"
-)
-
-// Unit Operations
-type uoPrototype struct {
- c *gorm.DB
-}
-
-func init() {
- Uo := &uoPrototype{c: db.Main}
- _ = Uo
-}
diff --git a/model/member.go b/model/member.go
index 8f601b8..f4dcc8e 100644
--- a/model/member.go
+++ b/model/member.go
@@ -1,14 +1,14 @@
package model
type Member struct {
- ID int `csv:"工号"` //工号
- Name string `csv:"姓名"`
- Sex bool `csv:"性别"` //不要把女生安排进男生宿舍,male=True
- FreeDay int `csv:"有空"` //哪天有空
- FreeDay2 int `csv:"有空"`
- Access int `csv:"权限"` //遵循报修系统的access enum ,用来标注管理层
- Arranged bool `csv:"-"` //供分配程序使用的字段
- Note int `csv:"-"` //正常=0,换班/补班=1,蹭班=2,供分配程序使用
+ ID int `csv:"工号" db:"id"` //工号
+ Name string `csv:"姓名" db:"name"`
+ Sex bool `csv:"性别" db:"sex"` //不要把女生安排进男生宿舍,male=True
+ FreeDay int `csv:"有空" db:"free_day"` //哪天有空
+ FreeDay2 int `csv:"有空" db:"free_day2"`
+ Access int `csv:"权限" db:"access"` //遵循报修系统的access enum ,用来标注管理层
+ Arranged bool `csv:"-" db:"-"` //供分配程序使用的字段
+ Note int `csv:"-" db:"-"` //正常=0,换班/补班=1,蹭班=2,供分配程序使用
}
// 权限:
diff --git a/route/route.go b/route/route.go
index e79c51a..2d6e3d6 100644
--- a/route/route.go
+++ b/route/route.go
@@ -13,4 +13,5 @@ func Route(app *echo.Echo) {
api := app.Group("/api/")
api.GET("getAssignment", handler.GetAssignment)
+ api.GET("test", handler.HandlerTest)
}
diff --git a/signals/issueID.go b/signals/issueID.go
new file mode 100644
index 0000000..55e8709
--- /dev/null
+++ b/signals/issueID.go
@@ -0,0 +1,28 @@
+package signals
+
+import (
+ "sync"
+ //"zsxyww.com/scheduler/database"
+)
+
+var IssueID int
+var IssueIDMutex sync.Mutex
+
+func init() {
+ //启动程序时从数据库获取最后的IssueID用来初始化程序的IssueID变量~
+}
+
+// IssueID++
+func IssueIDPP() {
+
+ IssueIDMutex.Lock()
+ IssueID++
+ IssueIDMutex.Unlock()
+
+}
+
+func GetIssueID() int {
+ IssueIDMutex.Lock()
+ defer IssueIDMutex.Unlock()
+ return IssueID
+}