mirror of
https://github.com/ZSCNetSupportDept/scheduler.git
synced 2025-10-28 20:45:05 +08:00
增加pgx驱动,完善前端的代码,暂定supabase后端数据库
This commit is contained in:
@@ -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');
|
||||
|
||||
@@ -116,8 +116,8 @@ button:hover {
|
||||
</head>
|
||||
<body>
|
||||
<div class="container">
|
||||
<h1>选择日期</h1>
|
||||
<i>如果不选择的日期的话,则自动获取今天的值班表</i><br></br>
|
||||
<h1>请选择日期</h1>
|
||||
<i>不选择日期则自动获取今天的值班表</i><br></br>
|
||||
<input type="date" id="calendar">
|
||||
<button id="getAssignment">获取值班表</button>
|
||||
<div id="response"></div>
|
||||
|
||||
@@ -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{})
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
26
database/pgsql.go
Normal file
26
database/pgsql.go
Normal file
@@ -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
|
||||
}
|
||||
@@ -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
|
||||
// }
|
||||
1
handler/repay.go
Normal file
1
handler/repay.go
Normal file
@@ -0,0 +1 @@
|
||||
package handler
|
||||
31
handler/test.go
Normal file
31
handler/test.go
Normal file
@@ -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")
|
||||
}
|
||||
}
|
||||
@@ -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
|
||||
}
|
||||
|
||||
@@ -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
|
||||
}
|
||||
@@ -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,供分配程序使用
|
||||
}
|
||||
|
||||
// 权限:
|
||||
|
||||
@@ -13,4 +13,5 @@ func Route(app *echo.Echo) {
|
||||
|
||||
api := app.Group("/api/")
|
||||
api.GET("getAssignment", handler.GetAssignment)
|
||||
api.GET("test", handler.HandlerTest)
|
||||
}
|
||||
|
||||
28
signals/issueID.go
Normal file
28
signals/issueID.go
Normal file
@@ -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
|
||||
}
|
||||
Reference in New Issue
Block a user