mirror of
https://github.com/go-admin-team/go-admin.git
synced 2026-09-22 10:33:13 +00:00
sys_user.username, sys_role.role_key and sys_dict_type.dict_type had no unique index. Uniqueness was a SELECT COUNT followed by an INSERT, which two concurrent requests both pass — and login resolves a username with First, so which of the two accounts answers is whichever the database returns. The index cannot be on the key alone, because a soft-deleted row keeps occupying the name and a deleted user's username could never be used again. It has to include the delete marker, and the marker has to be non-null: two live rows are (alice, NULL) and (alice, NULL), and NULL is not equal to NULL, so an index over a nullable marker admits both. That is the worst of the three states — a constraint that reads as protection and binds nothing — and there is a test that demonstrates it rather than asserting it. ModelTime.DeletedAt is milliseconds since the epoch now, zero while the row is live. Sixteen tables carry it; the migration converts each one, preserving when each deleted row was deleted, then adds the three indexes. Written to be re-runnable rather than transactional, because DDL does not roll back on MySQL and an operator whose first attempt failed halfway should have nothing to do but run it again. It refuses before altering anything if a table already holds duplicates, naming them, rather than letting the index fail and leaving the operator to guess. The timestamp conversion happens in Go: turning a timestamp into epoch milliseconds is spelled differently by every dialect this supports, and these row counts do not justify four versions of it.
156 lines
7.0 KiB
AMPL
156 lines
7.0 KiB
AMPL
module go-admin
|
|
|
|
go 1.26.5
|
|
|
|
require (
|
|
github.com/alibaba/sentinel-golang v1.0.4
|
|
github.com/alibaba/sentinel-golang/pkg/adapters/gin v0.0.0-20241224061304-f4c2c5964666
|
|
github.com/aliyun/aliyun-oss-go-sdk v3.0.2+incompatible
|
|
github.com/bitly/go-simplejson v0.5.1
|
|
github.com/bytedance/go-tagexpr/v2 v2.9.11
|
|
github.com/casbin/casbin/v3 v3.8.1
|
|
github.com/gin-gonic/gin v1.12.0
|
|
github.com/go-admin-team/go-admin-core v1.7.1-0.20260818135152-a912b404d5c0
|
|
github.com/google/uuid v1.6.0
|
|
github.com/huaweicloud/huaweicloud-sdk-go-obs v3.26.6+incompatible
|
|
github.com/mssola/user_agent v0.6.0
|
|
github.com/opentracing/opentracing-go v1.2.0
|
|
github.com/pkg/errors v0.9.1
|
|
github.com/prometheus/client_golang v1.24.1
|
|
github.com/qiniu/go-sdk/v7 v7.27.0
|
|
github.com/robfig/cron/v3 v3.0.1
|
|
github.com/shirou/gopsutil/v3 v3.24.5
|
|
github.com/spf13/cobra v1.10.2
|
|
github.com/swaggo/files v1.0.1
|
|
github.com/swaggo/gin-swagger v1.6.1
|
|
github.com/swaggo/swag v1.16.6
|
|
github.com/unrolled/secure v1.17.0
|
|
golang.org/x/crypto v0.54.0
|
|
gorm.io/driver/mysql v1.6.0
|
|
gorm.io/driver/postgres v1.6.2
|
|
gorm.io/driver/sqlite v1.6.0
|
|
gorm.io/driver/sqlserver v1.6.4
|
|
gorm.io/gorm v1.31.2
|
|
)
|
|
|
|
require (
|
|
dario.cat/mergo v1.0.2 // indirect
|
|
filippo.io/edwards25519 v1.2.0 // indirect
|
|
github.com/BurntSushi/toml v1.5.0 // indirect
|
|
github.com/KyleBanks/depth v1.2.1 // indirect
|
|
github.com/alex-ant/gomath v0.0.0-20160516115720-89013a210a82 // indirect
|
|
github.com/andeya/ameda v1.5.3 // indirect
|
|
github.com/andeya/goutil v1.1.2 // indirect
|
|
github.com/beorn7/perks v1.0.1 // indirect
|
|
github.com/bmatcuk/doublestar/v4 v4.10.0 // indirect
|
|
github.com/bytedance/gopkg v0.1.4 // indirect
|
|
github.com/bytedance/sonic v1.15.2 // indirect
|
|
github.com/bytedance/sonic/loader v0.5.2 // indirect
|
|
github.com/casbin/gorm-adapter/v3 v3.41.0 // indirect
|
|
github.com/casbin/govaluate v1.10.0 // indirect
|
|
github.com/cespare/xxhash/v2 v2.3.0 // indirect
|
|
github.com/chanxuehong/rand v0.0.0-20211009035549-2f07823e8e99 // indirect
|
|
github.com/chanxuehong/wechat v0.0.0-20230222024006-36f0325263cd // indirect
|
|
github.com/cloudwego/base64x v0.1.7 // indirect
|
|
github.com/dustin/go-humanize v1.0.1 // indirect
|
|
github.com/fsnotify/fsnotify v1.9.0 // indirect
|
|
github.com/gabriel-vasile/mimetype v1.4.15 // indirect
|
|
github.com/ghodss/yaml v1.0.0 // indirect
|
|
github.com/gin-contrib/sse v1.1.1 // indirect
|
|
github.com/glebarez/go-sqlite v1.22.0 // indirect
|
|
github.com/glebarez/sqlite v1.11.0 // indirect
|
|
github.com/go-ole/go-ole v1.2.6 // indirect
|
|
github.com/go-openapi/jsonpointer v1.0.0 // indirect
|
|
github.com/go-openapi/jsonreference v1.0.0 // indirect
|
|
github.com/go-openapi/spec v0.22.9 // indirect
|
|
github.com/go-openapi/swag/conv v0.28.0 // indirect
|
|
github.com/go-openapi/swag/jsonutils v0.28.0 // indirect
|
|
github.com/go-openapi/swag/loading v0.28.0 // indirect
|
|
github.com/go-openapi/swag/pools v0.28.0 // indirect
|
|
github.com/go-openapi/swag/stringutils v0.28.0 // indirect
|
|
github.com/go-openapi/swag/typeutils v0.28.0 // indirect
|
|
github.com/go-openapi/swag/yamlutils v0.28.0 // indirect
|
|
github.com/go-playground/locales v0.14.1 // indirect
|
|
github.com/go-playground/universal-translator v0.18.1 // indirect
|
|
github.com/go-playground/validator/v10 v10.30.3 // indirect
|
|
github.com/go-sql-driver/mysql v1.10.0 // indirect
|
|
github.com/goccy/go-json v0.10.6 // indirect
|
|
github.com/goccy/go-yaml v1.19.2 // indirect
|
|
github.com/gofrs/flock v0.8.1 // indirect
|
|
github.com/golang-jwt/jwt/v5 v5.3.1 // indirect
|
|
github.com/golang-sql/civil v0.0.0-20220223132316-b832511892a9 // indirect
|
|
github.com/golang-sql/sqlexp v0.1.0 // indirect
|
|
github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0 // indirect
|
|
github.com/gorilla/websocket v1.5.3 // indirect
|
|
github.com/inconshreveable/mousetrap v1.1.0 // indirect
|
|
github.com/jackc/pgpassfile v1.0.0 // indirect
|
|
github.com/jackc/pgservicefile v0.0.0-20240606120523-5a60cdf6a761 // indirect
|
|
github.com/jackc/pgx/v5 v5.10.0 // indirect
|
|
github.com/jackc/puddle/v2 v2.2.2 // indirect
|
|
github.com/jinzhu/inflection v1.0.0 // indirect
|
|
github.com/jinzhu/now v1.1.5 // indirect
|
|
github.com/json-iterator/go v1.1.12 // indirect
|
|
github.com/klauspost/cpuid/v2 v2.4.0 // indirect
|
|
github.com/leodido/go-urn v1.5.0 // indirect
|
|
github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0 // indirect
|
|
github.com/mattn/go-isatty v0.0.24 // indirect
|
|
github.com/mattn/go-sqlite3 v1.14.49 // indirect
|
|
github.com/microsoft/go-mssqldb v1.10.0 // indirect
|
|
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
|
|
github.com/modern-go/reflect2 v1.0.2 // indirect
|
|
github.com/mojocn/base64Captcha v1.3.8 // indirect
|
|
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect
|
|
github.com/ncruces/go-strftime v1.0.0 // indirect
|
|
github.com/nyaruka/phonenumbers v1.2.2 // indirect
|
|
github.com/pelletier/go-toml/v2 v2.4.3 // indirect
|
|
github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c // indirect
|
|
github.com/prometheus/client_model v0.6.2 // indirect
|
|
github.com/prometheus/common v0.70.1 // indirect
|
|
github.com/prometheus/procfs v0.21.1 // indirect
|
|
github.com/quic-go/qpack v0.6.0 // indirect
|
|
github.com/quic-go/quic-go v0.61.0 // indirect
|
|
github.com/redis/go-redis/v9 v9.22.0 // indirect
|
|
github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec // indirect
|
|
github.com/shamsher31/goimgext v1.0.0 // indirect
|
|
github.com/shoenig/go-m1cpu v0.1.6 // indirect
|
|
github.com/shopspring/decimal v1.4.0 // indirect
|
|
github.com/sirupsen/logrus v1.9.4 // indirect
|
|
github.com/spf13/cast v1.7.1 // indirect
|
|
github.com/spf13/pflag v1.0.10 // indirect
|
|
github.com/tklauser/go-sysconf v0.3.12 // indirect
|
|
github.com/tklauser/numcpus v0.6.1 // indirect
|
|
github.com/twitchyliquid64/golang-asm v0.15.1 // indirect
|
|
github.com/ugorji/go/codec v1.3.2 // indirect
|
|
github.com/yusufpapurcu/wmi v1.2.4 // indirect
|
|
go.mongodb.org/mongo-driver/v2 v2.8.0 // indirect
|
|
go.uber.org/atomic v1.11.0 // indirect
|
|
go.uber.org/multierr v1.11.0 // indirect
|
|
go.uber.org/zap v1.27.1 // indirect
|
|
go.yaml.in/yaml/v3 v3.0.5 // indirect
|
|
golang.org/x/arch v0.30.0 // indirect
|
|
golang.org/x/exp v0.0.0-20251219203646-944ab1f22d93 // indirect
|
|
golang.org/x/image v0.41.0 // indirect
|
|
golang.org/x/mod v0.38.0 // indirect
|
|
golang.org/x/net v0.57.0 // indirect
|
|
golang.org/x/sync v0.22.0 // indirect
|
|
golang.org/x/sys v0.47.0 // indirect
|
|
golang.org/x/text v0.40.0 // indirect
|
|
golang.org/x/time v0.15.0 // indirect
|
|
golang.org/x/tools v0.48.0 // indirect
|
|
google.golang.org/protobuf v1.36.11 // indirect
|
|
gopkg.in/natefinch/lumberjack.v2 v2.2.1 // indirect
|
|
gopkg.in/yaml.v2 v2.4.0 // indirect
|
|
gorm.io/plugin/dbresolver v1.6.2 // indirect
|
|
gorm.io/plugin/soft_delete v1.2.1 // indirect
|
|
modernc.org/fileutil v1.3.40 // indirect
|
|
modernc.org/libc v1.67.4 // indirect
|
|
modernc.org/mathutil v1.7.1 // indirect
|
|
modernc.org/memory v1.11.0 // indirect
|
|
modernc.org/sqlite v1.42.2 // indirect
|
|
)
|
|
|
|
//replace (
|
|
// github.com/go-admin-team/go-admin-core v1.5.2-0.20231103105356-84418ed9252c => ../go-admin-core
|
|
// github.com/go-admin-team/go-admin-core/sdk v1.5.2-0.20231103105356-84418ed9252c => ../go-admin-core/sdk
|
|
//)
|