feature/template #1
|
@ -0,0 +1,6 @@
|
|||
.idea/
|
||||
go.sum
|
||||
account/
|
||||
gen_result/
|
||||
etc/service.yaml
|
||||
client/
|
|
@ -0,0 +1,140 @@
|
|||
run:
|
||||
timeout: 3m
|
||||
# Exit code when at least one issue was found.
|
||||
# Default: 1
|
||||
issues-exit-code: 2
|
||||
# Include test files or not.
|
||||
# Default: true
|
||||
tests: false
|
||||
|
||||
# Reference URL: https://golangci-lint.run/usage/linters/
|
||||
linters:
|
||||
# Disable everything by default so upgrades to not include new - default
|
||||
# enabled- linters.
|
||||
disable-all: true
|
||||
# Specifically enable linters we want to use.
|
||||
enable:
|
||||
# - depguard
|
||||
- errcheck
|
||||
# - godot
|
||||
- gofmt
|
||||
- goimports
|
||||
- gosimple
|
||||
- govet
|
||||
- ineffassign
|
||||
- misspell
|
||||
- revive
|
||||
# - staticcheck
|
||||
- typecheck
|
||||
- unused
|
||||
# - wsl
|
||||
- asasalint
|
||||
- asciicheck
|
||||
- bidichk
|
||||
- bodyclose
|
||||
# - containedctx
|
||||
- contextcheck
|
||||
# - cyclop
|
||||
# - varnamelen
|
||||
# - gci
|
||||
- wastedassign
|
||||
- whitespace
|
||||
# - wrapcheck
|
||||
- thelper
|
||||
- tparallel
|
||||
- unconvert
|
||||
- unparam
|
||||
- usestdlibvars
|
||||
- tenv
|
||||
- testableexamples
|
||||
- stylecheck
|
||||
- sqlclosecheck
|
||||
- nosprintfhostport
|
||||
- paralleltest
|
||||
- prealloc
|
||||
- predeclared
|
||||
- promlinter
|
||||
- reassign
|
||||
- rowserrcheck
|
||||
- nakedret
|
||||
- nestif
|
||||
- nilerr
|
||||
- nilnil
|
||||
- nlreturn
|
||||
- noctx
|
||||
- nolintlint
|
||||
- nonamedreturns
|
||||
- decorder
|
||||
- dogsled
|
||||
# - dupl
|
||||
- dupword
|
||||
- durationcheck
|
||||
- errchkjson
|
||||
- errname
|
||||
- errorlint
|
||||
# - execinquery
|
||||
- exhaustive
|
||||
- exportloopref
|
||||
- forbidigo
|
||||
- forcetypeassert
|
||||
# - gochecknoglobals
|
||||
- gochecknoinits
|
||||
- gocognit
|
||||
- goconst
|
||||
- gocritic
|
||||
- gocyclo
|
||||
# - godox
|
||||
# - goerr113
|
||||
# - gofumpt
|
||||
- goheader
|
||||
- gomoddirectives
|
||||
# - gomodguard always failed
|
||||
- goprintffuncname
|
||||
- gosec
|
||||
- grouper
|
||||
- importas
|
||||
- interfacebloat
|
||||
# - ireturn
|
||||
- lll
|
||||
- loggercheck
|
||||
- maintidx
|
||||
- makezero
|
||||
|
||||
issues:
|
||||
exclude-rules:
|
||||
- path: _test\.go
|
||||
linters:
|
||||
- funlen
|
||||
- goconst
|
||||
- interfacer
|
||||
- dupl
|
||||
- lll
|
||||
- goerr113
|
||||
- errcheck
|
||||
- gocritic
|
||||
- cyclop
|
||||
- wrapcheck
|
||||
- gocognit
|
||||
- contextcheck
|
||||
|
||||
linters-settings:
|
||||
gci:
|
||||
sections:
|
||||
- standard # Standard section: captures all standard packages.
|
||||
- default # Default section: contains all imports that could not be matched to another section type.
|
||||
gocognit:
|
||||
# Minimal code complexity to report.
|
||||
# Default: 30 (but we recommend 10-20)
|
||||
min-complexity: 40
|
||||
nestif:
|
||||
# Minimal complexity of if statements to report.
|
||||
# Default: 5
|
||||
min-complexity: 10
|
||||
lll:
|
||||
# Max line length, lines longer will be reported.
|
||||
# '\t' is counted as 1 character by default, and can be changed with the tab-width option.
|
||||
# Default: 120.
|
||||
line-length: 200
|
||||
# Tab width in spaces.
|
||||
# Default: 1
|
||||
tab-width: 1
|
|
@ -0,0 +1,74 @@
|
|||
# go-zero 生成風格
|
||||
GO_ZERO_STYLE=go_zero
|
||||
|
||||
GO ?= go
|
||||
GOFMT ?= gofmt "-s"
|
||||
GOFILES := $(shell find . -name "*.go")
|
||||
LDFLAGS := -s -w
|
||||
VERSION="v1.0.1"
|
||||
DOCKER_REPO="igs170911/permission"
|
||||
|
||||
.PHONY: test
|
||||
test: # 進行測試
|
||||
go test -v --cover ./...
|
||||
|
||||
.PHONY: fmt
|
||||
fmt: # 格式優化
|
||||
$(GOFMT) -w $(GOFILES)
|
||||
goimports -w ./
|
||||
|
||||
.PHONY: gen-rpc
|
||||
gen-rpc: # 建立 rpc code
|
||||
goctl rpc protoc ./generate/protobuf/service.proto -m --style=$(GO_ZERO_STYLE) --go_out=./gen_result/pb --go-grpc_out=./gen_result/pb --zrpc_out=.
|
||||
go mod tidy
|
||||
@echo "Generate core-api files successfully"
|
||||
|
||||
.PHONY: gen-clean
|
||||
gen-clean: # 建立 rpc code
|
||||
rm -rf ./client
|
||||
rm -rf ./etc
|
||||
rm -rf ./gen_result
|
||||
rm -rf ./internal
|
||||
rm -rf go.mod
|
||||
rm -rf go.sum
|
||||
rm -rf service.go
|
||||
@echo "Generate core-api files successfully"
|
||||
|
||||
.PHONY: run-docker
|
||||
run-docker: # 建立 rpc code
|
||||
docker run --platform=linux/arm64/v8 -p 8080:8080 $(DOCKER_REPO):$(VERSION)
|
||||
|
||||
.PHONY: build-docker
|
||||
build-docker:
|
||||
cp ./build/Dockerfile Dockerfile
|
||||
docker buildx build -t $(DOCKER_REPO):$(VERSION) --build-arg SSH_PRIVATE_KEY="$(cat ~/.ssh/ed_25519)" .
|
||||
rm -rf Dockerfile
|
||||
@echo "Generate core-api files successfully"
|
||||
|
||||
.PHONY: gen-my-sql-model-up
|
||||
gen-my-sql-model: # 建立 rpc 資料庫
|
||||
goctl model mysql ddl -c no -s ./generate/database/mysql/20240816014305_create_permission_table.up.sql --style $(GO_ZERO_STYLE) -d ./internal/model -i ''
|
||||
goctl model mysql ddl -c no -s ./generate/database/mysql/20240819013052_create_roles_table.up.sql --style $(GO_ZERO_STYLE) -d ./internal/model -i ''
|
||||
goctl model mysql ddl -c no -s ./generate/database/mysql/20240819022436_create_user_role_table.up.sql --style $(GO_ZERO_STYLE) -d ./internal/model -i ''
|
||||
goctl model mysql ddl -c no -s ./generate/database/mysql/20240819090248_create_role_permission_table.up.sql --style $(GO_ZERO_STYLE) -d ./internal/model -i ''
|
||||
@echo "Generate mysql model files successfully"
|
||||
|
||||
.PHONY: mock-gen
|
||||
mock-gen: # 建立 mock 資料
|
||||
mockgen -source=./internal/model/permission_model.go -destination=./internal/mock/model/permission_model.go -package=mock
|
||||
mockgen -source=./internal/model/permission_model_gen.go -destination=./internal/mock/model/permission_model_gen.go -package=mock
|
||||
mockgen -source=./internal/model/role_model.go -destination=./internal/mock/model/role_model.go -package=mock
|
||||
mockgen -source=./internal/model/role_model_gen.go -destination=./internal/mock/model/role_model_gen.go -package=mock
|
||||
mockgen -source=./internal/model/role_permission_model.go -destination=./internal/mock/model/role_permission_model.go -package=mock
|
||||
mockgen -source=./internal/model/role_permission_model_gen.go -destination=./internal/mock/model/role_permission_model_gen.go -package=mock
|
||||
mockgen -source=./internal/model/user_role_model.go -destination=./internal/mock/model/user_role_model.go -package=mock
|
||||
mockgen -source=./internal/model/user_role_model_gen.go -destination=./internal/mock/model/user_role_model_gen.go -package=mock
|
||||
|
||||
|
||||
|
||||
@echo "Generate mock files successfully"
|
||||
|
||||
.PHONY: migrate-database
|
||||
migrate-database:
|
||||
migrate -source file://generate/database/mysql -database 'mysql://root:yytt@tcp(127.0.0.1:3306)/digimon_member' up
|
||||
migrate -source file://generate/database/seeders -database 'mysql://root:yytt@tcp(127.0.0.1:3306)/digimon_member' up
|
|
@ -0,0 +1,47 @@
|
|||
###########
|
||||
# BUILDER #
|
||||
###########
|
||||
|
||||
FROM golang:1.22.3 as builder
|
||||
|
||||
ARG VERSION
|
||||
ARG BUILT
|
||||
ARG GIT_COMMIT
|
||||
ARG SSH_PRV_KEY
|
||||
|
||||
# private go packages
|
||||
ENV GOPRIVATE=code.30cm.net
|
||||
ENV FLAG="-s -w -X main.Version=${VERSION} -X main.Built=${BUILT} -X main.GitCommit=${GIT_COMMIT}"
|
||||
WORKDIR /app
|
||||
COPY . .
|
||||
|
||||
|
||||
RUN apt-get update && \
|
||||
apt-get install git
|
||||
|
||||
# Make the root foler for our ssh
|
||||
RUN mkdir -p /root/.ssh && \
|
||||
chmod 0700 /root/.ssh && \
|
||||
ssh-keyscan git.30cm.net > /root/.ssh/known_hosts && \
|
||||
echo "$SSH_PRV_KEY" > /root/.ssh/id_rsa && \
|
||||
chmod 600 /root/.ssh/id_rsa
|
||||
|
||||
|
||||
|
||||
RUN --mount=type=ssh go mod download
|
||||
|
||||
RUN CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build \
|
||||
-ldflags "$FLAG" \
|
||||
-o service
|
||||
|
||||
##########
|
||||
## FINAL #
|
||||
##########
|
||||
#
|
||||
FROM gcr.io/distroless/static-debian11
|
||||
WORKDIR /app
|
||||
|
||||
COPY --from=builder /app/service /app/service
|
||||
COPY --from=builder /app/etc/service.yaml /app/etc/service.yaml
|
||||
EXPOSE 8080
|
||||
CMD ["/app/service"]
|
|
@ -0,0 +1 @@
|
|||
// TODO 未來要放 helm 的地方
|
|
@ -0,0 +1 @@
|
|||
DROP TABLE IF EXISTS `permission`;
|
|
@ -0,0 +1,15 @@
|
|||
-- 通常會把整個表都放到記憶體當中,不常搜尋,不需要加其他搜尋的 index
|
||||
CREATE TABLE `permission`
|
||||
(
|
||||
`id` bigint unsigned NOT NULL AUTO_INCREMENT COMMENT 'PK',
|
||||
`parent` bigint unsigned DEFAULT NULL,
|
||||
`name` varchar(255) NOT NULL,
|
||||
`http_method` varchar(255) NOT NULL,
|
||||
`http_path` text NOT NULL,
|
||||
`status` tinyint NOT NULL DEFAULT '1' COMMENT '狀態 1: 啟用, 2: 關閉',
|
||||
`type` tinyint NOT NULL DEFAULT '1' COMMENT '狀態 1: 後台, 2: 前台',
|
||||
`create_time` bigint DEFAULT 0 NOT NULL COMMENT '創建時間',
|
||||
`update_time` bigint DEFAULT 0 NOT NULL COMMENT '更新時間',
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `name_unique_key` (`name`)
|
||||
) ENGINE = InnoDB COMMENT ='權限表';
|
|
@ -0,0 +1 @@
|
|||
DROP TABLE IF EXISTS `role`;
|
|
@ -0,0 +1,12 @@
|
|||
CREATE TABLE `role`
|
||||
(
|
||||
`id` bigint unsigned NOT NULL AUTO_INCREMENT COMMENT 'PK',
|
||||
`role_id` varchar(50) NOT NULL,
|
||||
`display_name` varchar(255) NOT NULL COMMENT '名稱',
|
||||
`status` tinyint NOT NULL DEFAULT '1' COMMENT '狀態 1: 啟用, 2: 禁用',
|
||||
`create_time` bigint DEFAULT 0 NOT NULL COMMENT '創建時間',
|
||||
`update_time` bigint DEFAULT 0 NOT NULL COMMENT '更新時間',
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `uid_unique_key` (`role_id`),
|
||||
UNIQUE KEY `name_unique_key` (`display_name`)
|
||||
) ENGINE = InnoDB COMMENT ='角色';
|
|
@ -0,0 +1 @@
|
|||
DROP TABLE IF EXISTS `user_role`;
|
|
@ -0,0 +1,12 @@
|
|||
CREATE TABLE `user_role`
|
||||
(
|
||||
`id` bigint unsigned NOT NULL AUTO_INCREMENT COMMENT 'PK',
|
||||
`brand` varchar(50) DEFAULT '' NOT NULL COMMENT '',
|
||||
`uid` varchar(50) NOT NULL,
|
||||
`role_id` varchar(50) NOT NULL,
|
||||
`status` tinyint NOT NULL DEFAULT '1' COMMENT '狀態 1: 啟用, 2: 禁用',
|
||||
`create_time` bigint DEFAULT 0 NOT NULL COMMENT '創建時間',
|
||||
`update_time` bigint DEFAULT 0 NOT NULL COMMENT '更新時間',
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `uid_unique_key` (`uid`)
|
||||
) ENGINE = InnoDB COMMENT ='會員角色';
|
|
@ -0,0 +1 @@
|
|||
DROP TABLE IF EXISTS `role_permission`;
|
|
@ -0,0 +1,10 @@
|
|||
CREATE TABLE `role_permission`
|
||||
(
|
||||
`id` bigint unsigned NOT NULL AUTO_INCREMENT COMMENT 'PK',
|
||||
`role_id` bigint unsigned DEFAULT NULL COMMENT 'role.id',
|
||||
`permission_id` bigint unsigned DEFAULT NULL COMMENT 'permission.id',
|
||||
`create_time` bigint DEFAULT 0 NOT NULL COMMENT '創建時間',
|
||||
`update_time` bigint DEFAULT 0 NOT NULL COMMENT '更新時間',
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `category_id_permission_id_index` (`role_id`, `permission_id`)
|
||||
) ENGINE = InnoDB COMMENT ='角色權限';
|
|
@ -0,0 +1 @@
|
|||
DROP DATABASE IF EXISTS `digimon_permission`;
|
|
@ -0,0 +1,39 @@
|
|||
# migrate
|
||||
數據庫遷移工具
|
||||
|
||||
[golang-migrate](https://github.com/golang-migrate/migrate)
|
||||
|
||||
## 安裝 make
|
||||
```shell
|
||||
brew install Makefile
|
||||
```
|
||||
|
||||
## 安裝 golang-migrate
|
||||
```shell
|
||||
brew install golang-migrate
|
||||
```
|
||||
|
||||
## 執行刪除 mysql schema
|
||||
|
||||
```shell
|
||||
migrate -source file://database/migrations/mysql -database 'mysql://account:password@tcp(127.0.0.1:3306)/esc_c2c' down
|
||||
```
|
||||
|
||||
## 執行安裝 mysql schema
|
||||
|
||||
```shell
|
||||
migrate -source file://database/migrations/mysql -database 'mysql://account:password@tcp(127.0.0.1:3306)/esc_c2c' up
|
||||
```
|
||||
|
||||
## 執行刪除 mongo schema
|
||||
|
||||
```shell
|
||||
migrate -source file://database/migrations/mongodb -database 'mongodb://127.0.0.1:27017/esc_c2c' down
|
||||
```
|
||||
|
||||
## 執行安裝 mongo schema
|
||||
|
||||
```shell
|
||||
migrate -source file://database/migrations/mongodb -database 'mongodb://127.0.0.1:27017/esc_c2c' up
|
||||
```
|
||||
|
|
@ -0,0 +1 @@
|
|||
DELETE FROM `role` WHERE (`role_id` = 'AM000000');
|
|
@ -0,0 +1,3 @@
|
|||
INSERT INTO `role` (`role_id`, `display_name`, `status`, `create_time`, `update_time`)
|
||||
VALUES ('AM000000', 'admin', 1, UNIX_TIMESTAMP(), UNIX_TIMESTAMP()),
|
||||
('AM000001', 'visitor', 1, UNIX_TIMESTAMP(), UNIX_TIMESTAMP());
|
|
@ -0,0 +1,15 @@
|
|||
-- 一級分類
|
||||
INSERT INTO `permission` (`parent`, `name`, `http_method`, `http_path`, `create_time`, `update_time`)
|
||||
VALUES (0, 'user.info.management', '', '', UNIX_TIMESTAMP(), UNIX_TIMESTAMP()); -- 用戶資訊管理
|
||||
|
||||
# -- 二級分類 用戶資訊管理
|
||||
SET @id := (SELECT id FROM `permission` where name = 'user.info.management');
|
||||
INSERT INTO `permission` (`parent`, `name`, `http_method`, `http_path`, `create_time`, `update_time`)
|
||||
VALUES (@id, 'user.basic.info', '', '', UNIX_TIMESTAMP(), UNIX_TIMESTAMP()); -- 用戶基礎資訊查詢
|
||||
|
||||
|
||||
# -- 三級分類 用戶基礎資訊管理-基礎資訊查詢表
|
||||
SET @id := (SELECT id FROM `permission` where name = 'user.basic.info');
|
||||
INSERT INTO `permission` (`parent`, `name`, `http_method`, `http_path`, `create_time`, `update_time`)
|
||||
VALUES (@id, 'user.info.select', 'GET', '/v1/user', UNIX_TIMESTAMP(), UNIX_TIMESTAMP()), -- 查詢
|
||||
(@id, 'user.info.select.plain_code', 'GET', '/v1/user', UNIX_TIMESTAMP(), UNIX_TIMESTAMP()); -- 明碼查詢
|
|
@ -0,0 +1,154 @@
|
|||
syntax = "proto3";
|
||||
|
||||
package permission;
|
||||
|
||||
option go_package="./permission";
|
||||
|
||||
// OKResp
|
||||
message OKResp {}
|
||||
// NoneReq
|
||||
message NoneReq {}
|
||||
|
||||
// AuthorizationReq 定義授權請求的結構
|
||||
message AuthorizationReq {
|
||||
// grant_type 表示授權類型
|
||||
string grant_type = 1;
|
||||
// device_id 表示設備 ID
|
||||
string device_id = 2;
|
||||
// scope 表示授權範圍
|
||||
string scope = 3;
|
||||
// data 是一個通用的 key-value 結構,用於存儲額外數據
|
||||
map<string,string> data = 4;
|
||||
// expires 表示過期時間
|
||||
int32 expires = 5;
|
||||
// is_refresh_token 表示是否為刷新令牌
|
||||
bool is_refresh_token = 6;
|
||||
}
|
||||
|
||||
// TokenResp 定義訪問令牌響應的結構
|
||||
message TokenResp {
|
||||
// access_token 表示訪問令牌
|
||||
string access_token = 1;
|
||||
// token_type 表示令牌類型
|
||||
string token_type = 2;
|
||||
// expires_in 表示令牌過期時間
|
||||
int32 expires_in = 3;
|
||||
// refresh_token 表示刷新令牌
|
||||
string refresh_token = 4;
|
||||
}
|
||||
|
||||
// CreateOneTimeTokenReq 建立一次性使用的 token,
|
||||
// 要帶比較長久的 token 來,驗證後才可以
|
||||
message CreateOneTimeTokenReq {
|
||||
string token = 1;
|
||||
}
|
||||
|
||||
message CreateOneTimeTokenResp {
|
||||
string one_time_token = 1;
|
||||
}
|
||||
|
||||
// RefreshTokenReq 更新 Token
|
||||
message RefreshTokenReq {
|
||||
string token = 1;
|
||||
string scope = 2;
|
||||
int64 expires = 3;
|
||||
string device_id = 4;
|
||||
}
|
||||
|
||||
// https://datatracker.ietf.org/doc/html/rfc6749#section-4.3.3
|
||||
message RefreshTokenResp {
|
||||
string token =1;
|
||||
string one_time_token = 2;
|
||||
int64 expires_in = 3;
|
||||
string token_type = 4;
|
||||
}
|
||||
|
||||
// CancelTokenReq 註銷這個 Token
|
||||
message CancelTokenReq {
|
||||
string token = 1;
|
||||
}
|
||||
|
||||
// CancelTokenReq 註銷這個 Token
|
||||
message DoTokenByUIDReq {
|
||||
repeated string ids = 1;
|
||||
string uid = 2;
|
||||
}
|
||||
|
||||
// QueryTokenByUIDReq 拿這個UID 找 Token
|
||||
message QueryTokenByUIDReq {
|
||||
string uid = 1;
|
||||
}
|
||||
|
||||
// ValidationTokenReq 驗證這個 Token
|
||||
message ValidationTokenReq {
|
||||
string token = 1;
|
||||
}
|
||||
|
||||
// ValidationTokenResp 驗證以及取得 Token 詳情
|
||||
message ValidationTokenResp {
|
||||
Token token = 1;
|
||||
map<string,string> data = 2;
|
||||
}
|
||||
|
||||
// Token 定義令牌的結構
|
||||
message Token {
|
||||
// ID 表示令牌的唯一標識符
|
||||
string id = 1;
|
||||
// client_id 表示客戶端 ID
|
||||
int32 client_id = 2;
|
||||
// uid 表示用戶 ID
|
||||
string uid = 3;
|
||||
// device_id 表示設備 ID
|
||||
string device_id = 4;
|
||||
// access_token 表示訪問令牌
|
||||
string access_token = 5;
|
||||
// expires_in 表示訪問令牌的過期時間(秒)
|
||||
int32 expires_in = 6;
|
||||
// access_create_at 表示訪問令牌的創建時間
|
||||
int64 access_create_at = 7;
|
||||
// refresh_token 表示刷新令牌
|
||||
string refresh_token = 8;
|
||||
// refresh_expires_in 表示刷新令牌的過期時間(秒)
|
||||
int32 refresh_expires_in = 9;
|
||||
// refresh_create_at 表示刷新令牌的創建時間
|
||||
int64 refresh_create_at = 10;
|
||||
}
|
||||
|
||||
// DoTokenByDeviceIDReq 用DeviceID 來做事的
|
||||
message DoTokenByDeviceIDReq {
|
||||
string device_id = 1;
|
||||
}
|
||||
|
||||
message Tokens{
|
||||
repeated TokenResp token = 1;
|
||||
}
|
||||
|
||||
message CancelOneTimeTokenReq {
|
||||
repeated string token = 1;
|
||||
}
|
||||
|
||||
// 跟 Token 相關的大小事,這次只回應錯誤,以及結果,不統一規範
|
||||
// 錯誤碼應該在 Biz GW 在做回應,另外我這邊取名字比較通用,
|
||||
// access_token -> token , refresh_token -> one_time_token
|
||||
service TokenService {
|
||||
// NewToken 建立一個新的 Token,例如:AccessToken
|
||||
rpc NewToken(AuthorizationReq) returns(TokenResp);
|
||||
// RefreshToken 更新目前的token 以及裡面包含的一次性 Token
|
||||
rpc RefreshToken(RefreshTokenReq) returns(RefreshTokenResp);
|
||||
// CancelToken 取消 Token,也包含他裡面的 One Time Toke
|
||||
rpc CancelToken(CancelTokenReq) returns(OKResp);
|
||||
// ValidationToken 驗證這個 Token 有沒有效
|
||||
rpc ValidationToken(ValidationTokenReq) returns(ValidationTokenResp);
|
||||
// CancelTokens 取消 Token 從UID 視角,以及 token id 視角出發, UID 登出,底下所有 Device ID 也要登出, Token ID 登出, 所有 UID + Device 都要登出
|
||||
rpc CancelTokens(DoTokenByUIDReq) returns(OKResp);
|
||||
// CancelTokenByDeviceId 取消 Token, 從 Device 視角出發,可以選,登出這個Device 下所有 token ,登出這個Device 下指定token
|
||||
rpc CancelTokenByDeviceId(DoTokenByDeviceIDReq) returns(OKResp);
|
||||
// GetUserTokensByDeviceId 取得目前所對應的 DeviceID 所存在的 Tokens
|
||||
rpc GetUserTokensByDeviceId(DoTokenByDeviceIDReq) returns(Tokens);
|
||||
// GetUserTokensByUid 取得目前所對應的 UID 所存在的 Tokens
|
||||
rpc GetUserTokensByUid(QueryTokenByUIDReq) returns(Tokens);
|
||||
// NewOneTimeToken 建立一次性使用,例如:RefreshToken
|
||||
rpc NewOneTimeToken(CreateOneTimeTokenReq) returns(CreateOneTimeTokenResp);
|
||||
// CancelOneTimeToken 取消一次性使用
|
||||
rpc CancelOneTimeToken(CancelOneTimeTokenReq) returns(OKResp);
|
||||
}
|
|
@ -0,0 +1,88 @@
|
|||
module app-cloudep-permission-server
|
||||
|
||||
go 1.22.3
|
||||
|
||||
require (
|
||||
github.com/zeromicro/go-zero v1.7.0
|
||||
google.golang.org/grpc v1.65.0
|
||||
google.golang.org/protobuf v1.34.2
|
||||
)
|
||||
|
||||
require (
|
||||
github.com/beorn7/perks v1.0.1 // indirect
|
||||
github.com/cenkalti/backoff/v4 v4.3.0 // indirect
|
||||
github.com/cespare/xxhash/v2 v2.3.0 // indirect
|
||||
github.com/coreos/go-semver v0.3.1 // indirect
|
||||
github.com/coreos/go-systemd/v22 v22.5.0 // indirect
|
||||
github.com/davecgh/go-spew v1.1.1 // indirect
|
||||
github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f // indirect
|
||||
github.com/emicklei/go-restful/v3 v3.11.0 // indirect
|
||||
github.com/fatih/color v1.17.0 // indirect
|
||||
github.com/go-logr/logr v1.4.2 // indirect
|
||||
github.com/go-logr/stdr v1.2.2 // indirect
|
||||
github.com/go-openapi/jsonpointer v0.19.6 // indirect
|
||||
github.com/go-openapi/jsonreference v0.20.2 // indirect
|
||||
github.com/go-openapi/swag v0.22.4 // indirect
|
||||
github.com/gogo/protobuf v1.3.2 // indirect
|
||||
github.com/golang/mock v1.6.0 // indirect
|
||||
github.com/golang/protobuf v1.5.4 // indirect
|
||||
github.com/google/gnostic-models v0.6.8 // indirect
|
||||
github.com/google/go-cmp v0.6.0 // indirect
|
||||
github.com/google/gofuzz v1.2.0 // indirect
|
||||
github.com/google/uuid v1.6.0 // indirect
|
||||
github.com/grpc-ecosystem/grpc-gateway/v2 v2.20.0 // indirect
|
||||
github.com/josharian/intern v1.0.0 // indirect
|
||||
github.com/json-iterator/go v1.1.12 // indirect
|
||||
github.com/mailru/easyjson v0.7.7 // indirect
|
||||
github.com/mattn/go-colorable v0.1.13 // indirect
|
||||
github.com/mattn/go-isatty v0.0.20 // indirect
|
||||
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
|
||||
github.com/modern-go/reflect2 v1.0.2 // indirect
|
||||
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect
|
||||
github.com/openzipkin/zipkin-go v0.4.3 // indirect
|
||||
github.com/pelletier/go-toml/v2 v2.2.2 // indirect
|
||||
github.com/prometheus/client_golang v1.19.1 // indirect
|
||||
github.com/prometheus/client_model v0.5.0 // indirect
|
||||
github.com/prometheus/common v0.48.0 // indirect
|
||||
github.com/prometheus/procfs v0.12.0 // indirect
|
||||
github.com/redis/go-redis/v9 v9.6.1 // indirect
|
||||
github.com/spaolacci/murmur3 v1.1.0 // indirect
|
||||
go.etcd.io/etcd/api/v3 v3.5.15 // indirect
|
||||
go.etcd.io/etcd/client/pkg/v3 v3.5.15 // indirect
|
||||
go.etcd.io/etcd/client/v3 v3.5.15 // indirect
|
||||
go.opentelemetry.io/otel v1.24.0 // indirect
|
||||
go.opentelemetry.io/otel/exporters/jaeger v1.17.0 // indirect
|
||||
go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.24.0 // indirect
|
||||
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.24.0 // indirect
|
||||
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.24.0 // indirect
|
||||
go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.24.0 // indirect
|
||||
go.opentelemetry.io/otel/exporters/zipkin v1.24.0 // indirect
|
||||
go.opentelemetry.io/otel/metric v1.24.0 // indirect
|
||||
go.opentelemetry.io/otel/sdk v1.24.0 // indirect
|
||||
go.opentelemetry.io/otel/trace v1.24.0 // indirect
|
||||
go.opentelemetry.io/proto/otlp v1.3.1 // indirect
|
||||
go.uber.org/atomic v1.10.0 // indirect
|
||||
go.uber.org/automaxprocs v1.5.3 // indirect
|
||||
go.uber.org/multierr v1.9.0 // indirect
|
||||
go.uber.org/zap v1.24.0 // indirect
|
||||
golang.org/x/net v0.27.0 // indirect
|
||||
golang.org/x/oauth2 v0.20.0 // indirect
|
||||
golang.org/x/sys v0.22.0 // indirect
|
||||
golang.org/x/term v0.22.0 // indirect
|
||||
golang.org/x/text v0.16.0 // indirect
|
||||
golang.org/x/time v0.5.0 // indirect
|
||||
google.golang.org/genproto/googleapis/api v0.0.0-20240711142825-46eb208f015d // indirect
|
||||
google.golang.org/genproto/googleapis/rpc v0.0.0-20240701130421-f6361c86f094 // indirect
|
||||
gopkg.in/inf.v0 v0.9.1 // indirect
|
||||
gopkg.in/yaml.v2 v2.4.0 // indirect
|
||||
gopkg.in/yaml.v3 v3.0.1 // indirect
|
||||
k8s.io/api v0.29.3 // indirect
|
||||
k8s.io/apimachinery v0.29.4 // indirect
|
||||
k8s.io/client-go v0.29.3 // indirect
|
||||
k8s.io/klog/v2 v2.110.1 // indirect
|
||||
k8s.io/kube-openapi v0.0.0-20231010175941-2dd684a91f00 // indirect
|
||||
k8s.io/utils v0.0.0-20240711033017-18e509b52bc8 // indirect
|
||||
sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd // indirect
|
||||
sigs.k8s.io/structured-merge-diff/v4 v4.4.1 // indirect
|
||||
sigs.k8s.io/yaml v1.3.0 // indirect
|
||||
)
|
|
@ -0,0 +1,7 @@
|
|||
package config
|
||||
|
||||
import "github.com/zeromicro/go-zero/zrpc"
|
||||
|
||||
type Config struct {
|
||||
zrpc.RpcServerConf
|
||||
}
|
|
@ -0,0 +1,31 @@
|
|||
package tokenservicelogic
|
||||
|
||||
import (
|
||||
"context"
|
||||
|
||||
"app-cloudep-permission-server/gen_result/pb/permission"
|
||||
"app-cloudep-permission-server/internal/svc"
|
||||
|
||||
"github.com/zeromicro/go-zero/core/logx"
|
||||
)
|
||||
|
||||
type CancelOneTimeTokenLogic struct {
|
||||
ctx context.Context
|
||||
svcCtx *svc.ServiceContext
|
||||
logx.Logger
|
||||
}
|
||||
|
||||
func NewCancelOneTimeTokenLogic(ctx context.Context, svcCtx *svc.ServiceContext) *CancelOneTimeTokenLogic {
|
||||
return &CancelOneTimeTokenLogic{
|
||||
ctx: ctx,
|
||||
svcCtx: svcCtx,
|
||||
Logger: logx.WithContext(ctx),
|
||||
}
|
||||
}
|
||||
|
||||
// CancelOneTimeToken 取消一次性使用
|
||||
func (l *CancelOneTimeTokenLogic) CancelOneTimeToken(in *permission.CancelOneTimeTokenReq) (*permission.OKResp, error) {
|
||||
// todo: add your logic here and delete this line
|
||||
|
||||
return &permission.OKResp{}, nil
|
||||
}
|
|
@ -0,0 +1,31 @@
|
|||
package tokenservicelogic
|
||||
|
||||
import (
|
||||
"context"
|
||||
|
||||
"app-cloudep-permission-server/gen_result/pb/permission"
|
||||
"app-cloudep-permission-server/internal/svc"
|
||||
|
||||
"github.com/zeromicro/go-zero/core/logx"
|
||||
)
|
||||
|
||||
type CancelTokenByDeviceIdLogic struct {
|
||||
ctx context.Context
|
||||
svcCtx *svc.ServiceContext
|
||||
logx.Logger
|
||||
}
|
||||
|
||||
func NewCancelTokenByDeviceIdLogic(ctx context.Context, svcCtx *svc.ServiceContext) *CancelTokenByDeviceIdLogic {
|
||||
return &CancelTokenByDeviceIdLogic{
|
||||
ctx: ctx,
|
||||
svcCtx: svcCtx,
|
||||
Logger: logx.WithContext(ctx),
|
||||
}
|
||||
}
|
||||
|
||||
// CancelTokenByDeviceId 取消 Token, 從 Device 視角出發,可以選,登出這個Device 下所有 token ,登出這個Device 下指定token
|
||||
func (l *CancelTokenByDeviceIdLogic) CancelTokenByDeviceId(in *permission.DoTokenByDeviceIDReq) (*permission.OKResp, error) {
|
||||
// todo: add your logic here and delete this line
|
||||
|
||||
return &permission.OKResp{}, nil
|
||||
}
|
|
@ -0,0 +1,31 @@
|
|||
package tokenservicelogic
|
||||
|
||||
import (
|
||||
"context"
|
||||
|
||||
"app-cloudep-permission-server/gen_result/pb/permission"
|
||||
"app-cloudep-permission-server/internal/svc"
|
||||
|
||||
"github.com/zeromicro/go-zero/core/logx"
|
||||
)
|
||||
|
||||
type CancelTokenLogic struct {
|
||||
ctx context.Context
|
||||
svcCtx *svc.ServiceContext
|
||||
logx.Logger
|
||||
}
|
||||
|
||||
func NewCancelTokenLogic(ctx context.Context, svcCtx *svc.ServiceContext) *CancelTokenLogic {
|
||||
return &CancelTokenLogic{
|
||||
ctx: ctx,
|
||||
svcCtx: svcCtx,
|
||||
Logger: logx.WithContext(ctx),
|
||||
}
|
||||
}
|
||||
|
||||
// CancelToken 取消 Token,也包含他裡面的 One Time Toke
|
||||
func (l *CancelTokenLogic) CancelToken(in *permission.CancelTokenReq) (*permission.OKResp, error) {
|
||||
// todo: add your logic here and delete this line
|
||||
|
||||
return &permission.OKResp{}, nil
|
||||
}
|
|
@ -0,0 +1,31 @@
|
|||
package tokenservicelogic
|
||||
|
||||
import (
|
||||
"context"
|
||||
|
||||
"app-cloudep-permission-server/gen_result/pb/permission"
|
||||
"app-cloudep-permission-server/internal/svc"
|
||||
|
||||
"github.com/zeromicro/go-zero/core/logx"
|
||||
)
|
||||
|
||||
type CancelTokensLogic struct {
|
||||
ctx context.Context
|
||||
svcCtx *svc.ServiceContext
|
||||
logx.Logger
|
||||
}
|
||||
|
||||
func NewCancelTokensLogic(ctx context.Context, svcCtx *svc.ServiceContext) *CancelTokensLogic {
|
||||
return &CancelTokensLogic{
|
||||
ctx: ctx,
|
||||
svcCtx: svcCtx,
|
||||
Logger: logx.WithContext(ctx),
|
||||
}
|
||||
}
|
||||
|
||||
// CancelTokens 取消 Token 從UID 視角,以及 token id 視角出發, UID 登出,底下所有 Device ID 也要登出, Token ID 登出, 所有 UID + Device 都要登出
|
||||
func (l *CancelTokensLogic) CancelTokens(in *permission.DoTokenByUIDReq) (*permission.OKResp, error) {
|
||||
// todo: add your logic here and delete this line
|
||||
|
||||
return &permission.OKResp{}, nil
|
||||
}
|
|
@ -0,0 +1,31 @@
|
|||
package tokenservicelogic
|
||||
|
||||
import (
|
||||
"context"
|
||||
|
||||
"app-cloudep-permission-server/gen_result/pb/permission"
|
||||
"app-cloudep-permission-server/internal/svc"
|
||||
|
||||
"github.com/zeromicro/go-zero/core/logx"
|
||||
)
|
||||
|
||||
type GetUserTokensByDeviceIdLogic struct {
|
||||
ctx context.Context
|
||||
svcCtx *svc.ServiceContext
|
||||
logx.Logger
|
||||
}
|
||||
|
||||
func NewGetUserTokensByDeviceIdLogic(ctx context.Context, svcCtx *svc.ServiceContext) *GetUserTokensByDeviceIdLogic {
|
||||
return &GetUserTokensByDeviceIdLogic{
|
||||
ctx: ctx,
|
||||
svcCtx: svcCtx,
|
||||
Logger: logx.WithContext(ctx),
|
||||
}
|
||||
}
|
||||
|
||||
// GetUserTokensByDeviceId 取得目前所對應的 DeviceID 所存在的 Tokens
|
||||
func (l *GetUserTokensByDeviceIdLogic) GetUserTokensByDeviceId(in *permission.DoTokenByDeviceIDReq) (*permission.Tokens, error) {
|
||||
// todo: add your logic here and delete this line
|
||||
|
||||
return &permission.Tokens{}, nil
|
||||
}
|
|
@ -0,0 +1,31 @@
|
|||
package tokenservicelogic
|
||||
|
||||
import (
|
||||
"context"
|
||||
|
||||
"app-cloudep-permission-server/gen_result/pb/permission"
|
||||
"app-cloudep-permission-server/internal/svc"
|
||||
|
||||
"github.com/zeromicro/go-zero/core/logx"
|
||||
)
|
||||
|
||||
type GetUserTokensByUidLogic struct {
|
||||
ctx context.Context
|
||||
svcCtx *svc.ServiceContext
|
||||
logx.Logger
|
||||
}
|
||||
|
||||
func NewGetUserTokensByUidLogic(ctx context.Context, svcCtx *svc.ServiceContext) *GetUserTokensByUidLogic {
|
||||
return &GetUserTokensByUidLogic{
|
||||
ctx: ctx,
|
||||
svcCtx: svcCtx,
|
||||
Logger: logx.WithContext(ctx),
|
||||
}
|
||||
}
|
||||
|
||||
// GetUserTokensByUid 取得目前所對應的 UID 所存在的 Tokens
|
||||
func (l *GetUserTokensByUidLogic) GetUserTokensByUid(in *permission.QueryTokenByUIDReq) (*permission.Tokens, error) {
|
||||
// todo: add your logic here and delete this line
|
||||
|
||||
return &permission.Tokens{}, nil
|
||||
}
|
|
@ -0,0 +1,31 @@
|
|||
package tokenservicelogic
|
||||
|
||||
import (
|
||||
"context"
|
||||
|
||||
"app-cloudep-permission-server/gen_result/pb/permission"
|
||||
"app-cloudep-permission-server/internal/svc"
|
||||
|
||||
"github.com/zeromicro/go-zero/core/logx"
|
||||
)
|
||||
|
||||
type NewOneTimeTokenLogic struct {
|
||||
ctx context.Context
|
||||
svcCtx *svc.ServiceContext
|
||||
logx.Logger
|
||||
}
|
||||
|
||||
func NewNewOneTimeTokenLogic(ctx context.Context, svcCtx *svc.ServiceContext) *NewOneTimeTokenLogic {
|
||||
return &NewOneTimeTokenLogic{
|
||||
ctx: ctx,
|
||||
svcCtx: svcCtx,
|
||||
Logger: logx.WithContext(ctx),
|
||||
}
|
||||
}
|
||||
|
||||
// NewOneTimeToken 建立一次性使用,例如:RefreshToken
|
||||
func (l *NewOneTimeTokenLogic) NewOneTimeToken(in *permission.CreateOneTimeTokenReq) (*permission.CreateOneTimeTokenResp, error) {
|
||||
// todo: add your logic here and delete this line
|
||||
|
||||
return &permission.CreateOneTimeTokenResp{}, nil
|
||||
}
|
|
@ -0,0 +1,31 @@
|
|||
package tokenservicelogic
|
||||
|
||||
import (
|
||||
"context"
|
||||
|
||||
"app-cloudep-permission-server/gen_result/pb/permission"
|
||||
"app-cloudep-permission-server/internal/svc"
|
||||
|
||||
"github.com/zeromicro/go-zero/core/logx"
|
||||
)
|
||||
|
||||
type NewTokenLogic struct {
|
||||
ctx context.Context
|
||||
svcCtx *svc.ServiceContext
|
||||
logx.Logger
|
||||
}
|
||||
|
||||
func NewNewTokenLogic(ctx context.Context, svcCtx *svc.ServiceContext) *NewTokenLogic {
|
||||
return &NewTokenLogic{
|
||||
ctx: ctx,
|
||||
svcCtx: svcCtx,
|
||||
Logger: logx.WithContext(ctx),
|
||||
}
|
||||
}
|
||||
|
||||
// NewToken 建立一個新的 Token,例如:AccessToken
|
||||
func (l *NewTokenLogic) NewToken(in *permission.AuthorizationReq) (*permission.TokenResp, error) {
|
||||
// todo: add your logic here and delete this line
|
||||
|
||||
return &permission.TokenResp{}, nil
|
||||
}
|
|
@ -0,0 +1,31 @@
|
|||
package tokenservicelogic
|
||||
|
||||
import (
|
||||
"context"
|
||||
|
||||
"app-cloudep-permission-server/gen_result/pb/permission"
|
||||
"app-cloudep-permission-server/internal/svc"
|
||||
|
||||
"github.com/zeromicro/go-zero/core/logx"
|
||||
)
|
||||
|
||||
type RefreshTokenLogic struct {
|
||||
ctx context.Context
|
||||
svcCtx *svc.ServiceContext
|
||||
logx.Logger
|
||||
}
|
||||
|
||||
func NewRefreshTokenLogic(ctx context.Context, svcCtx *svc.ServiceContext) *RefreshTokenLogic {
|
||||
return &RefreshTokenLogic{
|
||||
ctx: ctx,
|
||||
svcCtx: svcCtx,
|
||||
Logger: logx.WithContext(ctx),
|
||||
}
|
||||
}
|
||||
|
||||
// RefreshToken 更新目前的token 以及裡面包含的一次性 Token
|
||||
func (l *RefreshTokenLogic) RefreshToken(in *permission.RefreshTokenReq) (*permission.RefreshTokenResp, error) {
|
||||
// todo: add your logic here and delete this line
|
||||
|
||||
return &permission.RefreshTokenResp{}, nil
|
||||
}
|
|
@ -0,0 +1,31 @@
|
|||
package tokenservicelogic
|
||||
|
||||
import (
|
||||
"context"
|
||||
|
||||
"app-cloudep-permission-server/gen_result/pb/permission"
|
||||
"app-cloudep-permission-server/internal/svc"
|
||||
|
||||
"github.com/zeromicro/go-zero/core/logx"
|
||||
)
|
||||
|
||||
type ValidationTokenLogic struct {
|
||||
ctx context.Context
|
||||
svcCtx *svc.ServiceContext
|
||||
logx.Logger
|
||||
}
|
||||
|
||||
func NewValidationTokenLogic(ctx context.Context, svcCtx *svc.ServiceContext) *ValidationTokenLogic {
|
||||
return &ValidationTokenLogic{
|
||||
ctx: ctx,
|
||||
svcCtx: svcCtx,
|
||||
Logger: logx.WithContext(ctx),
|
||||
}
|
||||
}
|
||||
|
||||
// ValidationToken 驗證這個 Token 有沒有效
|
||||
func (l *ValidationTokenLogic) ValidationToken(in *permission.ValidationTokenReq) (*permission.ValidationTokenResp, error) {
|
||||
// todo: add your logic here and delete this line
|
||||
|
||||
return &permission.ValidationTokenResp{}, nil
|
||||
}
|
|
@ -0,0 +1,115 @@
|
|||
// Code generated by MockGen. DO NOT EDIT.
|
||||
// Source: ./internal/model/permission_model.go
|
||||
//
|
||||
// Generated by this command:
|
||||
//
|
||||
// mockgen -source=./internal/model/permission_model.go -destination=./internal/mock/model/permission_model.go -package=mock
|
||||
//
|
||||
|
||||
// Package mock is a generated GoMock package.
|
||||
package mock
|
||||
|
||||
import (
|
||||
model "app-cloudep-permission-server/internal/model"
|
||||
context "context"
|
||||
sql "database/sql"
|
||||
reflect "reflect"
|
||||
|
||||
gomock "go.uber.org/mock/gomock"
|
||||
)
|
||||
|
||||
// MockPermissionModel is a mock of PermissionModel interface.
|
||||
type MockPermissionModel struct {
|
||||
ctrl *gomock.Controller
|
||||
recorder *MockPermissionModelMockRecorder
|
||||
}
|
||||
|
||||
// MockPermissionModelMockRecorder is the mock recorder for MockPermissionModel.
|
||||
type MockPermissionModelMockRecorder struct {
|
||||
mock *MockPermissionModel
|
||||
}
|
||||
|
||||
// NewMockPermissionModel creates a new mock instance.
|
||||
func NewMockPermissionModel(ctrl *gomock.Controller) *MockPermissionModel {
|
||||
mock := &MockPermissionModel{ctrl: ctrl}
|
||||
mock.recorder = &MockPermissionModelMockRecorder{mock}
|
||||
return mock
|
||||
}
|
||||
|
||||
// EXPECT returns an object that allows the caller to indicate expected use.
|
||||
func (m *MockPermissionModel) EXPECT() *MockPermissionModelMockRecorder {
|
||||
return m.recorder
|
||||
}
|
||||
|
||||
// Delete mocks base method.
|
||||
func (m *MockPermissionModel) Delete(ctx context.Context, id int64) error {
|
||||
m.ctrl.T.Helper()
|
||||
ret := m.ctrl.Call(m, "Delete", ctx, id)
|
||||
ret0, _ := ret[0].(error)
|
||||
return ret0
|
||||
}
|
||||
|
||||
// Delete indicates an expected call of Delete.
|
||||
func (mr *MockPermissionModelMockRecorder) Delete(ctx, id any) *gomock.Call {
|
||||
mr.mock.ctrl.T.Helper()
|
||||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Delete", reflect.TypeOf((*MockPermissionModel)(nil).Delete), ctx, id)
|
||||
}
|
||||
|
||||
// FindOne mocks base method.
|
||||
func (m *MockPermissionModel) FindOne(ctx context.Context, id int64) (*model.Permission, error) {
|
||||
m.ctrl.T.Helper()
|
||||
ret := m.ctrl.Call(m, "FindOne", ctx, id)
|
||||
ret0, _ := ret[0].(*model.Permission)
|
||||
ret1, _ := ret[1].(error)
|
||||
return ret0, ret1
|
||||
}
|
||||
|
||||
// FindOne indicates an expected call of FindOne.
|
||||
func (mr *MockPermissionModelMockRecorder) FindOne(ctx, id any) *gomock.Call {
|
||||
mr.mock.ctrl.T.Helper()
|
||||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "FindOne", reflect.TypeOf((*MockPermissionModel)(nil).FindOne), ctx, id)
|
||||
}
|
||||
|
||||
// FindOneByName mocks base method.
|
||||
func (m *MockPermissionModel) FindOneByName(ctx context.Context, name string) (*model.Permission, error) {
|
||||
m.ctrl.T.Helper()
|
||||
ret := m.ctrl.Call(m, "FindOneByName", ctx, name)
|
||||
ret0, _ := ret[0].(*model.Permission)
|
||||
ret1, _ := ret[1].(error)
|
||||
return ret0, ret1
|
||||
}
|
||||
|
||||
// FindOneByName indicates an expected call of FindOneByName.
|
||||
func (mr *MockPermissionModelMockRecorder) FindOneByName(ctx, name any) *gomock.Call {
|
||||
mr.mock.ctrl.T.Helper()
|
||||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "FindOneByName", reflect.TypeOf((*MockPermissionModel)(nil).FindOneByName), ctx, name)
|
||||
}
|
||||
|
||||
// Insert mocks base method.
|
||||
func (m *MockPermissionModel) Insert(ctx context.Context, data *model.Permission) (sql.Result, error) {
|
||||
m.ctrl.T.Helper()
|
||||
ret := m.ctrl.Call(m, "Insert", ctx, data)
|
||||
ret0, _ := ret[0].(sql.Result)
|
||||
ret1, _ := ret[1].(error)
|
||||
return ret0, ret1
|
||||
}
|
||||
|
||||
// Insert indicates an expected call of Insert.
|
||||
func (mr *MockPermissionModelMockRecorder) Insert(ctx, data any) *gomock.Call {
|
||||
mr.mock.ctrl.T.Helper()
|
||||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Insert", reflect.TypeOf((*MockPermissionModel)(nil).Insert), ctx, data)
|
||||
}
|
||||
|
||||
// Update mocks base method.
|
||||
func (m *MockPermissionModel) Update(ctx context.Context, data *model.Permission) error {
|
||||
m.ctrl.T.Helper()
|
||||
ret := m.ctrl.Call(m, "Update", ctx, data)
|
||||
ret0, _ := ret[0].(error)
|
||||
return ret0
|
||||
}
|
||||
|
||||
// Update indicates an expected call of Update.
|
||||
func (mr *MockPermissionModelMockRecorder) Update(ctx, data any) *gomock.Call {
|
||||
mr.mock.ctrl.T.Helper()
|
||||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Update", reflect.TypeOf((*MockPermissionModel)(nil).Update), ctx, data)
|
||||
}
|
|
@ -0,0 +1,115 @@
|
|||
// Code generated by MockGen. DO NOT EDIT.
|
||||
// Source: ./internal/model/permission_model_gen.go
|
||||
//
|
||||
// Generated by this command:
|
||||
//
|
||||
// mockgen -source=./internal/model/permission_model_gen.go -destination=./internal/mock/model/permission_model_gen.go -package=mock
|
||||
//
|
||||
|
||||
// Package mock is a generated GoMock package.
|
||||
package mock
|
||||
|
||||
import (
|
||||
model "app-cloudep-permission-server/internal/model"
|
||||
context "context"
|
||||
sql "database/sql"
|
||||
reflect "reflect"
|
||||
|
||||
gomock "go.uber.org/mock/gomock"
|
||||
)
|
||||
|
||||
// MockpermissionModel is a mock of permissionModel interface.
|
||||
type MockpermissionModel struct {
|
||||
ctrl *gomock.Controller
|
||||
recorder *MockpermissionModelMockRecorder
|
||||
}
|
||||
|
||||
// MockpermissionModelMockRecorder is the mock recorder for MockpermissionModel.
|
||||
type MockpermissionModelMockRecorder struct {
|
||||
mock *MockpermissionModel
|
||||
}
|
||||
|
||||
// NewMockpermissionModel creates a new mock instance.
|
||||
func NewMockpermissionModel(ctrl *gomock.Controller) *MockpermissionModel {
|
||||
mock := &MockpermissionModel{ctrl: ctrl}
|
||||
mock.recorder = &MockpermissionModelMockRecorder{mock}
|
||||
return mock
|
||||
}
|
||||
|
||||
// EXPECT returns an object that allows the caller to indicate expected use.
|
||||
func (m *MockpermissionModel) EXPECT() *MockpermissionModelMockRecorder {
|
||||
return m.recorder
|
||||
}
|
||||
|
||||
// Delete mocks base method.
|
||||
func (m *MockpermissionModel) Delete(ctx context.Context, id int64) error {
|
||||
m.ctrl.T.Helper()
|
||||
ret := m.ctrl.Call(m, "Delete", ctx, id)
|
||||
ret0, _ := ret[0].(error)
|
||||
return ret0
|
||||
}
|
||||
|
||||
// Delete indicates an expected call of Delete.
|
||||
func (mr *MockpermissionModelMockRecorder) Delete(ctx, id any) *gomock.Call {
|
||||
mr.mock.ctrl.T.Helper()
|
||||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Delete", reflect.TypeOf((*MockpermissionModel)(nil).Delete), ctx, id)
|
||||
}
|
||||
|
||||
// FindOne mocks base method.
|
||||
func (m *MockpermissionModel) FindOne(ctx context.Context, id int64) (*model.Permission, error) {
|
||||
m.ctrl.T.Helper()
|
||||
ret := m.ctrl.Call(m, "FindOne", ctx, id)
|
||||
ret0, _ := ret[0].(*model.Permission)
|
||||
ret1, _ := ret[1].(error)
|
||||
return ret0, ret1
|
||||
}
|
||||
|
||||
// FindOne indicates an expected call of FindOne.
|
||||
func (mr *MockpermissionModelMockRecorder) FindOne(ctx, id any) *gomock.Call {
|
||||
mr.mock.ctrl.T.Helper()
|
||||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "FindOne", reflect.TypeOf((*MockpermissionModel)(nil).FindOne), ctx, id)
|
||||
}
|
||||
|
||||
// FindOneByName mocks base method.
|
||||
func (m *MockpermissionModel) FindOneByName(ctx context.Context, name string) (*model.Permission, error) {
|
||||
m.ctrl.T.Helper()
|
||||
ret := m.ctrl.Call(m, "FindOneByName", ctx, name)
|
||||
ret0, _ := ret[0].(*model.Permission)
|
||||
ret1, _ := ret[1].(error)
|
||||
return ret0, ret1
|
||||
}
|
||||
|
||||
// FindOneByName indicates an expected call of FindOneByName.
|
||||
func (mr *MockpermissionModelMockRecorder) FindOneByName(ctx, name any) *gomock.Call {
|
||||
mr.mock.ctrl.T.Helper()
|
||||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "FindOneByName", reflect.TypeOf((*MockpermissionModel)(nil).FindOneByName), ctx, name)
|
||||
}
|
||||
|
||||
// Insert mocks base method.
|
||||
func (m *MockpermissionModel) Insert(ctx context.Context, data *model.Permission) (sql.Result, error) {
|
||||
m.ctrl.T.Helper()
|
||||
ret := m.ctrl.Call(m, "Insert", ctx, data)
|
||||
ret0, _ := ret[0].(sql.Result)
|
||||
ret1, _ := ret[1].(error)
|
||||
return ret0, ret1
|
||||
}
|
||||
|
||||
// Insert indicates an expected call of Insert.
|
||||
func (mr *MockpermissionModelMockRecorder) Insert(ctx, data any) *gomock.Call {
|
||||
mr.mock.ctrl.T.Helper()
|
||||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Insert", reflect.TypeOf((*MockpermissionModel)(nil).Insert), ctx, data)
|
||||
}
|
||||
|
||||
// Update mocks base method.
|
||||
func (m *MockpermissionModel) Update(ctx context.Context, data *model.Permission) error {
|
||||
m.ctrl.T.Helper()
|
||||
ret := m.ctrl.Call(m, "Update", ctx, data)
|
||||
ret0, _ := ret[0].(error)
|
||||
return ret0
|
||||
}
|
||||
|
||||
// Update indicates an expected call of Update.
|
||||
func (mr *MockpermissionModelMockRecorder) Update(ctx, data any) *gomock.Call {
|
||||
mr.mock.ctrl.T.Helper()
|
||||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Update", reflect.TypeOf((*MockpermissionModel)(nil).Update), ctx, data)
|
||||
}
|
|
@ -0,0 +1,130 @@
|
|||
// Code generated by MockGen. DO NOT EDIT.
|
||||
// Source: ./internal/model/role_model.go
|
||||
//
|
||||
// Generated by this command:
|
||||
//
|
||||
// mockgen -source=./internal/model/role_model.go -destination=./internal/mock/model/role_model.go -package=mock
|
||||
//
|
||||
|
||||
// Package mock is a generated GoMock package.
|
||||
package mock
|
||||
|
||||
import (
|
||||
model "app-cloudep-permission-server/internal/model"
|
||||
context "context"
|
||||
sql "database/sql"
|
||||
reflect "reflect"
|
||||
|
||||
gomock "go.uber.org/mock/gomock"
|
||||
)
|
||||
|
||||
// MockRoleModel is a mock of RoleModel interface.
|
||||
type MockRoleModel struct {
|
||||
ctrl *gomock.Controller
|
||||
recorder *MockRoleModelMockRecorder
|
||||
}
|
||||
|
||||
// MockRoleModelMockRecorder is the mock recorder for MockRoleModel.
|
||||
type MockRoleModelMockRecorder struct {
|
||||
mock *MockRoleModel
|
||||
}
|
||||
|
||||
// NewMockRoleModel creates a new mock instance.
|
||||
func NewMockRoleModel(ctrl *gomock.Controller) *MockRoleModel {
|
||||
mock := &MockRoleModel{ctrl: ctrl}
|
||||
mock.recorder = &MockRoleModelMockRecorder{mock}
|
||||
return mock
|
||||
}
|
||||
|
||||
// EXPECT returns an object that allows the caller to indicate expected use.
|
||||
func (m *MockRoleModel) EXPECT() *MockRoleModelMockRecorder {
|
||||
return m.recorder
|
||||
}
|
||||
|
||||
// Delete mocks base method.
|
||||
func (m *MockRoleModel) Delete(ctx context.Context, id int64) error {
|
||||
m.ctrl.T.Helper()
|
||||
ret := m.ctrl.Call(m, "Delete", ctx, id)
|
||||
ret0, _ := ret[0].(error)
|
||||
return ret0
|
||||
}
|
||||
|
||||
// Delete indicates an expected call of Delete.
|
||||
func (mr *MockRoleModelMockRecorder) Delete(ctx, id any) *gomock.Call {
|
||||
mr.mock.ctrl.T.Helper()
|
||||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Delete", reflect.TypeOf((*MockRoleModel)(nil).Delete), ctx, id)
|
||||
}
|
||||
|
||||
// FindOne mocks base method.
|
||||
func (m *MockRoleModel) FindOne(ctx context.Context, id int64) (*model.Role, error) {
|
||||
m.ctrl.T.Helper()
|
||||
ret := m.ctrl.Call(m, "FindOne", ctx, id)
|
||||
ret0, _ := ret[0].(*model.Role)
|
||||
ret1, _ := ret[1].(error)
|
||||
return ret0, ret1
|
||||
}
|
||||
|
||||
// FindOne indicates an expected call of FindOne.
|
||||
func (mr *MockRoleModelMockRecorder) FindOne(ctx, id any) *gomock.Call {
|
||||
mr.mock.ctrl.T.Helper()
|
||||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "FindOne", reflect.TypeOf((*MockRoleModel)(nil).FindOne), ctx, id)
|
||||
}
|
||||
|
||||
// FindOneByDisplayName mocks base method.
|
||||
func (m *MockRoleModel) FindOneByDisplayName(ctx context.Context, displayName string) (*model.Role, error) {
|
||||
m.ctrl.T.Helper()
|
||||
ret := m.ctrl.Call(m, "FindOneByDisplayName", ctx, displayName)
|
||||
ret0, _ := ret[0].(*model.Role)
|
||||
ret1, _ := ret[1].(error)
|
||||
return ret0, ret1
|
||||
}
|
||||
|
||||
// FindOneByDisplayName indicates an expected call of FindOneByDisplayName.
|
||||
func (mr *MockRoleModelMockRecorder) FindOneByDisplayName(ctx, displayName any) *gomock.Call {
|
||||
mr.mock.ctrl.T.Helper()
|
||||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "FindOneByDisplayName", reflect.TypeOf((*MockRoleModel)(nil).FindOneByDisplayName), ctx, displayName)
|
||||
}
|
||||
|
||||
// FindOneByRoleId mocks base method.
|
||||
func (m *MockRoleModel) FindOneByRoleId(ctx context.Context, roleId string) (*model.Role, error) {
|
||||
m.ctrl.T.Helper()
|
||||
ret := m.ctrl.Call(m, "FindOneByRoleId", ctx, roleId)
|
||||
ret0, _ := ret[0].(*model.Role)
|
||||
ret1, _ := ret[1].(error)
|
||||
return ret0, ret1
|
||||
}
|
||||
|
||||
// FindOneByRoleId indicates an expected call of FindOneByRoleId.
|
||||
func (mr *MockRoleModelMockRecorder) FindOneByRoleId(ctx, roleId any) *gomock.Call {
|
||||
mr.mock.ctrl.T.Helper()
|
||||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "FindOneByRoleId", reflect.TypeOf((*MockRoleModel)(nil).FindOneByRoleId), ctx, roleId)
|
||||
}
|
||||
|
||||
// Insert mocks base method.
|
||||
func (m *MockRoleModel) Insert(ctx context.Context, data *model.Role) (sql.Result, error) {
|
||||
m.ctrl.T.Helper()
|
||||
ret := m.ctrl.Call(m, "Insert", ctx, data)
|
||||
ret0, _ := ret[0].(sql.Result)
|
||||
ret1, _ := ret[1].(error)
|
||||
return ret0, ret1
|
||||
}
|
||||
|
||||
// Insert indicates an expected call of Insert.
|
||||
func (mr *MockRoleModelMockRecorder) Insert(ctx, data any) *gomock.Call {
|
||||
mr.mock.ctrl.T.Helper()
|
||||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Insert", reflect.TypeOf((*MockRoleModel)(nil).Insert), ctx, data)
|
||||
}
|
||||
|
||||
// Update mocks base method.
|
||||
func (m *MockRoleModel) Update(ctx context.Context, data *model.Role) error {
|
||||
m.ctrl.T.Helper()
|
||||
ret := m.ctrl.Call(m, "Update", ctx, data)
|
||||
ret0, _ := ret[0].(error)
|
||||
return ret0
|
||||
}
|
||||
|
||||
// Update indicates an expected call of Update.
|
||||
func (mr *MockRoleModelMockRecorder) Update(ctx, data any) *gomock.Call {
|
||||
mr.mock.ctrl.T.Helper()
|
||||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Update", reflect.TypeOf((*MockRoleModel)(nil).Update), ctx, data)
|
||||
}
|
|
@ -0,0 +1,130 @@
|
|||
// Code generated by MockGen. DO NOT EDIT.
|
||||
// Source: ./internal/model/role_model_gen.go
|
||||
//
|
||||
// Generated by this command:
|
||||
//
|
||||
// mockgen -source=./internal/model/role_model_gen.go -destination=./internal/mock/model/role_model_gen.go -package=mock
|
||||
//
|
||||
|
||||
// Package mock is a generated GoMock package.
|
||||
package mock
|
||||
|
||||
import (
|
||||
model "app-cloudep-permission-server/internal/model"
|
||||
context "context"
|
||||
sql "database/sql"
|
||||
reflect "reflect"
|
||||
|
||||
gomock "go.uber.org/mock/gomock"
|
||||
)
|
||||
|
||||
// MockroleModel is a mock of roleModel interface.
|
||||
type MockroleModel struct {
|
||||
ctrl *gomock.Controller
|
||||
recorder *MockroleModelMockRecorder
|
||||
}
|
||||
|
||||
// MockroleModelMockRecorder is the mock recorder for MockroleModel.
|
||||
type MockroleModelMockRecorder struct {
|
||||
mock *MockroleModel
|
||||
}
|
||||
|
||||
// NewMockroleModel creates a new mock instance.
|
||||
func NewMockroleModel(ctrl *gomock.Controller) *MockroleModel {
|
||||
mock := &MockroleModel{ctrl: ctrl}
|
||||
mock.recorder = &MockroleModelMockRecorder{mock}
|
||||
return mock
|
||||
}
|
||||
|
||||
// EXPECT returns an object that allows the caller to indicate expected use.
|
||||
func (m *MockroleModel) EXPECT() *MockroleModelMockRecorder {
|
||||
return m.recorder
|
||||
}
|
||||
|
||||
// Delete mocks base method.
|
||||
func (m *MockroleModel) Delete(ctx context.Context, id int64) error {
|
||||
m.ctrl.T.Helper()
|
||||
ret := m.ctrl.Call(m, "Delete", ctx, id)
|
||||
ret0, _ := ret[0].(error)
|
||||
return ret0
|
||||
}
|
||||
|
||||
// Delete indicates an expected call of Delete.
|
||||
func (mr *MockroleModelMockRecorder) Delete(ctx, id any) *gomock.Call {
|
||||
mr.mock.ctrl.T.Helper()
|
||||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Delete", reflect.TypeOf((*MockroleModel)(nil).Delete), ctx, id)
|
||||
}
|
||||
|
||||
// FindOne mocks base method.
|
||||
func (m *MockroleModel) FindOne(ctx context.Context, id int64) (*model.Role, error) {
|
||||
m.ctrl.T.Helper()
|
||||
ret := m.ctrl.Call(m, "FindOne", ctx, id)
|
||||
ret0, _ := ret[0].(*model.Role)
|
||||
ret1, _ := ret[1].(error)
|
||||
return ret0, ret1
|
||||
}
|
||||
|
||||
// FindOne indicates an expected call of FindOne.
|
||||
func (mr *MockroleModelMockRecorder) FindOne(ctx, id any) *gomock.Call {
|
||||
mr.mock.ctrl.T.Helper()
|
||||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "FindOne", reflect.TypeOf((*MockroleModel)(nil).FindOne), ctx, id)
|
||||
}
|
||||
|
||||
// FindOneByDisplayName mocks base method.
|
||||
func (m *MockroleModel) FindOneByDisplayName(ctx context.Context, displayName string) (*model.Role, error) {
|
||||
m.ctrl.T.Helper()
|
||||
ret := m.ctrl.Call(m, "FindOneByDisplayName", ctx, displayName)
|
||||
ret0, _ := ret[0].(*model.Role)
|
||||
ret1, _ := ret[1].(error)
|
||||
return ret0, ret1
|
||||
}
|
||||
|
||||
// FindOneByDisplayName indicates an expected call of FindOneByDisplayName.
|
||||
func (mr *MockroleModelMockRecorder) FindOneByDisplayName(ctx, displayName any) *gomock.Call {
|
||||
mr.mock.ctrl.T.Helper()
|
||||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "FindOneByDisplayName", reflect.TypeOf((*MockroleModel)(nil).FindOneByDisplayName), ctx, displayName)
|
||||
}
|
||||
|
||||
// FindOneByRoleId mocks base method.
|
||||
func (m *MockroleModel) FindOneByRoleId(ctx context.Context, roleId string) (*model.Role, error) {
|
||||
m.ctrl.T.Helper()
|
||||
ret := m.ctrl.Call(m, "FindOneByRoleId", ctx, roleId)
|
||||
ret0, _ := ret[0].(*model.Role)
|
||||
ret1, _ := ret[1].(error)
|
||||
return ret0, ret1
|
||||
}
|
||||
|
||||
// FindOneByRoleId indicates an expected call of FindOneByRoleId.
|
||||
func (mr *MockroleModelMockRecorder) FindOneByRoleId(ctx, roleId any) *gomock.Call {
|
||||
mr.mock.ctrl.T.Helper()
|
||||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "FindOneByRoleId", reflect.TypeOf((*MockroleModel)(nil).FindOneByRoleId), ctx, roleId)
|
||||
}
|
||||
|
||||
// Insert mocks base method.
|
||||
func (m *MockroleModel) Insert(ctx context.Context, data *model.Role) (sql.Result, error) {
|
||||
m.ctrl.T.Helper()
|
||||
ret := m.ctrl.Call(m, "Insert", ctx, data)
|
||||
ret0, _ := ret[0].(sql.Result)
|
||||
ret1, _ := ret[1].(error)
|
||||
return ret0, ret1
|
||||
}
|
||||
|
||||
// Insert indicates an expected call of Insert.
|
||||
func (mr *MockroleModelMockRecorder) Insert(ctx, data any) *gomock.Call {
|
||||
mr.mock.ctrl.T.Helper()
|
||||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Insert", reflect.TypeOf((*MockroleModel)(nil).Insert), ctx, data)
|
||||
}
|
||||
|
||||
// Update mocks base method.
|
||||
func (m *MockroleModel) Update(ctx context.Context, data *model.Role) error {
|
||||
m.ctrl.T.Helper()
|
||||
ret := m.ctrl.Call(m, "Update", ctx, data)
|
||||
ret0, _ := ret[0].(error)
|
||||
return ret0
|
||||
}
|
||||
|
||||
// Update indicates an expected call of Update.
|
||||
func (mr *MockroleModelMockRecorder) Update(ctx, data any) *gomock.Call {
|
||||
mr.mock.ctrl.T.Helper()
|
||||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Update", reflect.TypeOf((*MockroleModel)(nil).Update), ctx, data)
|
||||
}
|
|
@ -0,0 +1,100 @@
|
|||
// Code generated by MockGen. DO NOT EDIT.
|
||||
// Source: ./internal/model/role_permission_model.go
|
||||
//
|
||||
// Generated by this command:
|
||||
//
|
||||
// mockgen -source=./internal/model/role_permission_model.go -destination=./internal/mock/model/role_permission_model.go -package=mock
|
||||
//
|
||||
|
||||
// Package mock is a generated GoMock package.
|
||||
package mock
|
||||
|
||||
import (
|
||||
model "app-cloudep-permission-server/internal/model"
|
||||
context "context"
|
||||
sql "database/sql"
|
||||
reflect "reflect"
|
||||
|
||||
gomock "go.uber.org/mock/gomock"
|
||||
)
|
||||
|
||||
// MockRolePermissionModel is a mock of RolePermissionModel interface.
|
||||
type MockRolePermissionModel struct {
|
||||
ctrl *gomock.Controller
|
||||
recorder *MockRolePermissionModelMockRecorder
|
||||
}
|
||||
|
||||
// MockRolePermissionModelMockRecorder is the mock recorder for MockRolePermissionModel.
|
||||
type MockRolePermissionModelMockRecorder struct {
|
||||
mock *MockRolePermissionModel
|
||||
}
|
||||
|
||||
// NewMockRolePermissionModel creates a new mock instance.
|
||||
func NewMockRolePermissionModel(ctrl *gomock.Controller) *MockRolePermissionModel {
|
||||
mock := &MockRolePermissionModel{ctrl: ctrl}
|
||||
mock.recorder = &MockRolePermissionModelMockRecorder{mock}
|
||||
return mock
|
||||
}
|
||||
|
||||
// EXPECT returns an object that allows the caller to indicate expected use.
|
||||
func (m *MockRolePermissionModel) EXPECT() *MockRolePermissionModelMockRecorder {
|
||||
return m.recorder
|
||||
}
|
||||
|
||||
// Delete mocks base method.
|
||||
func (m *MockRolePermissionModel) Delete(ctx context.Context, id int64) error {
|
||||
m.ctrl.T.Helper()
|
||||
ret := m.ctrl.Call(m, "Delete", ctx, id)
|
||||
ret0, _ := ret[0].(error)
|
||||
return ret0
|
||||
}
|
||||
|
||||
// Delete indicates an expected call of Delete.
|
||||
func (mr *MockRolePermissionModelMockRecorder) Delete(ctx, id any) *gomock.Call {
|
||||
mr.mock.ctrl.T.Helper()
|
||||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Delete", reflect.TypeOf((*MockRolePermissionModel)(nil).Delete), ctx, id)
|
||||
}
|
||||
|
||||
// FindOne mocks base method.
|
||||
func (m *MockRolePermissionModel) FindOne(ctx context.Context, id int64) (*model.RolePermission, error) {
|
||||
m.ctrl.T.Helper()
|
||||
ret := m.ctrl.Call(m, "FindOne", ctx, id)
|
||||
ret0, _ := ret[0].(*model.RolePermission)
|
||||
ret1, _ := ret[1].(error)
|
||||
return ret0, ret1
|
||||
}
|
||||
|
||||
// FindOne indicates an expected call of FindOne.
|
||||
func (mr *MockRolePermissionModelMockRecorder) FindOne(ctx, id any) *gomock.Call {
|
||||
mr.mock.ctrl.T.Helper()
|
||||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "FindOne", reflect.TypeOf((*MockRolePermissionModel)(nil).FindOne), ctx, id)
|
||||
}
|
||||
|
||||
// Insert mocks base method.
|
||||
func (m *MockRolePermissionModel) Insert(ctx context.Context, data *model.RolePermission) (sql.Result, error) {
|
||||
m.ctrl.T.Helper()
|
||||
ret := m.ctrl.Call(m, "Insert", ctx, data)
|
||||
ret0, _ := ret[0].(sql.Result)
|
||||
ret1, _ := ret[1].(error)
|
||||
return ret0, ret1
|
||||
}
|
||||
|
||||
// Insert indicates an expected call of Insert.
|
||||
func (mr *MockRolePermissionModelMockRecorder) Insert(ctx, data any) *gomock.Call {
|
||||
mr.mock.ctrl.T.Helper()
|
||||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Insert", reflect.TypeOf((*MockRolePermissionModel)(nil).Insert), ctx, data)
|
||||
}
|
||||
|
||||
// Update mocks base method.
|
||||
func (m *MockRolePermissionModel) Update(ctx context.Context, data *model.RolePermission) error {
|
||||
m.ctrl.T.Helper()
|
||||
ret := m.ctrl.Call(m, "Update", ctx, data)
|
||||
ret0, _ := ret[0].(error)
|
||||
return ret0
|
||||
}
|
||||
|
||||
// Update indicates an expected call of Update.
|
||||
func (mr *MockRolePermissionModelMockRecorder) Update(ctx, data any) *gomock.Call {
|
||||
mr.mock.ctrl.T.Helper()
|
||||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Update", reflect.TypeOf((*MockRolePermissionModel)(nil).Update), ctx, data)
|
||||
}
|
|
@ -0,0 +1,100 @@
|
|||
// Code generated by MockGen. DO NOT EDIT.
|
||||
// Source: ./internal/model/role_permission_model_gen.go
|
||||
//
|
||||
// Generated by this command:
|
||||
//
|
||||
// mockgen -source=./internal/model/role_permission_model_gen.go -destination=./internal/mock/model/role_permission_model_gen.go -package=mock
|
||||
//
|
||||
|
||||
// Package mock is a generated GoMock package.
|
||||
package mock
|
||||
|
||||
import (
|
||||
model "app-cloudep-permission-server/internal/model"
|
||||
context "context"
|
||||
sql "database/sql"
|
||||
reflect "reflect"
|
||||
|
||||
gomock "go.uber.org/mock/gomock"
|
||||
)
|
||||
|
||||
// MockrolePermissionModel is a mock of rolePermissionModel interface.
|
||||
type MockrolePermissionModel struct {
|
||||
ctrl *gomock.Controller
|
||||
recorder *MockrolePermissionModelMockRecorder
|
||||
}
|
||||
|
||||
// MockrolePermissionModelMockRecorder is the mock recorder for MockrolePermissionModel.
|
||||
type MockrolePermissionModelMockRecorder struct {
|
||||
mock *MockrolePermissionModel
|
||||
}
|
||||
|
||||
// NewMockrolePermissionModel creates a new mock instance.
|
||||
func NewMockrolePermissionModel(ctrl *gomock.Controller) *MockrolePermissionModel {
|
||||
mock := &MockrolePermissionModel{ctrl: ctrl}
|
||||
mock.recorder = &MockrolePermissionModelMockRecorder{mock}
|
||||
return mock
|
||||
}
|
||||
|
||||
// EXPECT returns an object that allows the caller to indicate expected use.
|
||||
func (m *MockrolePermissionModel) EXPECT() *MockrolePermissionModelMockRecorder {
|
||||
return m.recorder
|
||||
}
|
||||
|
||||
// Delete mocks base method.
|
||||
func (m *MockrolePermissionModel) Delete(ctx context.Context, id int64) error {
|
||||
m.ctrl.T.Helper()
|
||||
ret := m.ctrl.Call(m, "Delete", ctx, id)
|
||||
ret0, _ := ret[0].(error)
|
||||
return ret0
|
||||
}
|
||||
|
||||
// Delete indicates an expected call of Delete.
|
||||
func (mr *MockrolePermissionModelMockRecorder) Delete(ctx, id any) *gomock.Call {
|
||||
mr.mock.ctrl.T.Helper()
|
||||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Delete", reflect.TypeOf((*MockrolePermissionModel)(nil).Delete), ctx, id)
|
||||
}
|
||||
|
||||
// FindOne mocks base method.
|
||||
func (m *MockrolePermissionModel) FindOne(ctx context.Context, id int64) (*model.RolePermission, error) {
|
||||
m.ctrl.T.Helper()
|
||||
ret := m.ctrl.Call(m, "FindOne", ctx, id)
|
||||
ret0, _ := ret[0].(*model.RolePermission)
|
||||
ret1, _ := ret[1].(error)
|
||||
return ret0, ret1
|
||||
}
|
||||
|
||||
// FindOne indicates an expected call of FindOne.
|
||||
func (mr *MockrolePermissionModelMockRecorder) FindOne(ctx, id any) *gomock.Call {
|
||||
mr.mock.ctrl.T.Helper()
|
||||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "FindOne", reflect.TypeOf((*MockrolePermissionModel)(nil).FindOne), ctx, id)
|
||||
}
|
||||
|
||||
// Insert mocks base method.
|
||||
func (m *MockrolePermissionModel) Insert(ctx context.Context, data *model.RolePermission) (sql.Result, error) {
|
||||
m.ctrl.T.Helper()
|
||||
ret := m.ctrl.Call(m, "Insert", ctx, data)
|
||||
ret0, _ := ret[0].(sql.Result)
|
||||
ret1, _ := ret[1].(error)
|
||||
return ret0, ret1
|
||||
}
|
||||
|
||||
// Insert indicates an expected call of Insert.
|
||||
func (mr *MockrolePermissionModelMockRecorder) Insert(ctx, data any) *gomock.Call {
|
||||
mr.mock.ctrl.T.Helper()
|
||||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Insert", reflect.TypeOf((*MockrolePermissionModel)(nil).Insert), ctx, data)
|
||||
}
|
||||
|
||||
// Update mocks base method.
|
||||
func (m *MockrolePermissionModel) Update(ctx context.Context, data *model.RolePermission) error {
|
||||
m.ctrl.T.Helper()
|
||||
ret := m.ctrl.Call(m, "Update", ctx, data)
|
||||
ret0, _ := ret[0].(error)
|
||||
return ret0
|
||||
}
|
||||
|
||||
// Update indicates an expected call of Update.
|
||||
func (mr *MockrolePermissionModelMockRecorder) Update(ctx, data any) *gomock.Call {
|
||||
mr.mock.ctrl.T.Helper()
|
||||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Update", reflect.TypeOf((*MockrolePermissionModel)(nil).Update), ctx, data)
|
||||
}
|
|
@ -0,0 +1,115 @@
|
|||
// Code generated by MockGen. DO NOT EDIT.
|
||||
// Source: ./internal/model/user_role_model.go
|
||||
//
|
||||
// Generated by this command:
|
||||
//
|
||||
// mockgen -source=./internal/model/user_role_model.go -destination=./internal/mock/model/user_role_model.go -package=mock
|
||||
//
|
||||
|
||||
// Package mock is a generated GoMock package.
|
||||
package mock
|
||||
|
||||
import (
|
||||
model "app-cloudep-permission-server/internal/model"
|
||||
context "context"
|
||||
sql "database/sql"
|
||||
reflect "reflect"
|
||||
|
||||
gomock "go.uber.org/mock/gomock"
|
||||
)
|
||||
|
||||
// MockUserRoleModel is a mock of UserRoleModel interface.
|
||||
type MockUserRoleModel struct {
|
||||
ctrl *gomock.Controller
|
||||
recorder *MockUserRoleModelMockRecorder
|
||||
}
|
||||
|
||||
// MockUserRoleModelMockRecorder is the mock recorder for MockUserRoleModel.
|
||||
type MockUserRoleModelMockRecorder struct {
|
||||
mock *MockUserRoleModel
|
||||
}
|
||||
|
||||
// NewMockUserRoleModel creates a new mock instance.
|
||||
func NewMockUserRoleModel(ctrl *gomock.Controller) *MockUserRoleModel {
|
||||
mock := &MockUserRoleModel{ctrl: ctrl}
|
||||
mock.recorder = &MockUserRoleModelMockRecorder{mock}
|
||||
return mock
|
||||
}
|
||||
|
||||
// EXPECT returns an object that allows the caller to indicate expected use.
|
||||
func (m *MockUserRoleModel) EXPECT() *MockUserRoleModelMockRecorder {
|
||||
return m.recorder
|
||||
}
|
||||
|
||||
// Delete mocks base method.
|
||||
func (m *MockUserRoleModel) Delete(ctx context.Context, id int64) error {
|
||||
m.ctrl.T.Helper()
|
||||
ret := m.ctrl.Call(m, "Delete", ctx, id)
|
||||
ret0, _ := ret[0].(error)
|
||||
return ret0
|
||||
}
|
||||
|
||||
// Delete indicates an expected call of Delete.
|
||||
func (mr *MockUserRoleModelMockRecorder) Delete(ctx, id any) *gomock.Call {
|
||||
mr.mock.ctrl.T.Helper()
|
||||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Delete", reflect.TypeOf((*MockUserRoleModel)(nil).Delete), ctx, id)
|
||||
}
|
||||
|
||||
// FindOne mocks base method.
|
||||
func (m *MockUserRoleModel) FindOne(ctx context.Context, id int64) (*model.UserRole, error) {
|
||||
m.ctrl.T.Helper()
|
||||
ret := m.ctrl.Call(m, "FindOne", ctx, id)
|
||||
ret0, _ := ret[0].(*model.UserRole)
|
||||
ret1, _ := ret[1].(error)
|
||||
return ret0, ret1
|
||||
}
|
||||
|
||||
// FindOne indicates an expected call of FindOne.
|
||||
func (mr *MockUserRoleModelMockRecorder) FindOne(ctx, id any) *gomock.Call {
|
||||
mr.mock.ctrl.T.Helper()
|
||||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "FindOne", reflect.TypeOf((*MockUserRoleModel)(nil).FindOne), ctx, id)
|
||||
}
|
||||
|
||||
// FindOneByUid mocks base method.
|
||||
func (m *MockUserRoleModel) FindOneByUid(ctx context.Context, uid string) (*model.UserRole, error) {
|
||||
m.ctrl.T.Helper()
|
||||
ret := m.ctrl.Call(m, "FindOneByUid", ctx, uid)
|
||||
ret0, _ := ret[0].(*model.UserRole)
|
||||
ret1, _ := ret[1].(error)
|
||||
return ret0, ret1
|
||||
}
|
||||
|
||||
// FindOneByUid indicates an expected call of FindOneByUid.
|
||||
func (mr *MockUserRoleModelMockRecorder) FindOneByUid(ctx, uid any) *gomock.Call {
|
||||
mr.mock.ctrl.T.Helper()
|
||||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "FindOneByUid", reflect.TypeOf((*MockUserRoleModel)(nil).FindOneByUid), ctx, uid)
|
||||
}
|
||||
|
||||
// Insert mocks base method.
|
||||
func (m *MockUserRoleModel) Insert(ctx context.Context, data *model.UserRole) (sql.Result, error) {
|
||||
m.ctrl.T.Helper()
|
||||
ret := m.ctrl.Call(m, "Insert", ctx, data)
|
||||
ret0, _ := ret[0].(sql.Result)
|
||||
ret1, _ := ret[1].(error)
|
||||
return ret0, ret1
|
||||
}
|
||||
|
||||
// Insert indicates an expected call of Insert.
|
||||
func (mr *MockUserRoleModelMockRecorder) Insert(ctx, data any) *gomock.Call {
|
||||
mr.mock.ctrl.T.Helper()
|
||||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Insert", reflect.TypeOf((*MockUserRoleModel)(nil).Insert), ctx, data)
|
||||
}
|
||||
|
||||
// Update mocks base method.
|
||||
func (m *MockUserRoleModel) Update(ctx context.Context, data *model.UserRole) error {
|
||||
m.ctrl.T.Helper()
|
||||
ret := m.ctrl.Call(m, "Update", ctx, data)
|
||||
ret0, _ := ret[0].(error)
|
||||
return ret0
|
||||
}
|
||||
|
||||
// Update indicates an expected call of Update.
|
||||
func (mr *MockUserRoleModelMockRecorder) Update(ctx, data any) *gomock.Call {
|
||||
mr.mock.ctrl.T.Helper()
|
||||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Update", reflect.TypeOf((*MockUserRoleModel)(nil).Update), ctx, data)
|
||||
}
|
|
@ -0,0 +1,115 @@
|
|||
// Code generated by MockGen. DO NOT EDIT.
|
||||
// Source: ./internal/model/user_role_model_gen.go
|
||||
//
|
||||
// Generated by this command:
|
||||
//
|
||||
// mockgen -source=./internal/model/user_role_model_gen.go -destination=./internal/mock/model/user_role_model_gen.go -package=mock
|
||||
//
|
||||
|
||||
// Package mock is a generated GoMock package.
|
||||
package mock
|
||||
|
||||
import (
|
||||
model "app-cloudep-permission-server/internal/model"
|
||||
context "context"
|
||||
sql "database/sql"
|
||||
reflect "reflect"
|
||||
|
||||
gomock "go.uber.org/mock/gomock"
|
||||
)
|
||||
|
||||
// MockuserRoleModel is a mock of userRoleModel interface.
|
||||
type MockuserRoleModel struct {
|
||||
ctrl *gomock.Controller
|
||||
recorder *MockuserRoleModelMockRecorder
|
||||
}
|
||||
|
||||
// MockuserRoleModelMockRecorder is the mock recorder for MockuserRoleModel.
|
||||
type MockuserRoleModelMockRecorder struct {
|
||||
mock *MockuserRoleModel
|
||||
}
|
||||
|
||||
// NewMockuserRoleModel creates a new mock instance.
|
||||
func NewMockuserRoleModel(ctrl *gomock.Controller) *MockuserRoleModel {
|
||||
mock := &MockuserRoleModel{ctrl: ctrl}
|
||||
mock.recorder = &MockuserRoleModelMockRecorder{mock}
|
||||
return mock
|
||||
}
|
||||
|
||||
// EXPECT returns an object that allows the caller to indicate expected use.
|
||||
func (m *MockuserRoleModel) EXPECT() *MockuserRoleModelMockRecorder {
|
||||
return m.recorder
|
||||
}
|
||||
|
||||
// Delete mocks base method.
|
||||
func (m *MockuserRoleModel) Delete(ctx context.Context, id int64) error {
|
||||
m.ctrl.T.Helper()
|
||||
ret := m.ctrl.Call(m, "Delete", ctx, id)
|
||||
ret0, _ := ret[0].(error)
|
||||
return ret0
|
||||
}
|
||||
|
||||
// Delete indicates an expected call of Delete.
|
||||
func (mr *MockuserRoleModelMockRecorder) Delete(ctx, id any) *gomock.Call {
|
||||
mr.mock.ctrl.T.Helper()
|
||||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Delete", reflect.TypeOf((*MockuserRoleModel)(nil).Delete), ctx, id)
|
||||
}
|
||||
|
||||
// FindOne mocks base method.
|
||||
func (m *MockuserRoleModel) FindOne(ctx context.Context, id int64) (*model.UserRole, error) {
|
||||
m.ctrl.T.Helper()
|
||||
ret := m.ctrl.Call(m, "FindOne", ctx, id)
|
||||
ret0, _ := ret[0].(*model.UserRole)
|
||||
ret1, _ := ret[1].(error)
|
||||
return ret0, ret1
|
||||
}
|
||||
|
||||
// FindOne indicates an expected call of FindOne.
|
||||
func (mr *MockuserRoleModelMockRecorder) FindOne(ctx, id any) *gomock.Call {
|
||||
mr.mock.ctrl.T.Helper()
|
||||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "FindOne", reflect.TypeOf((*MockuserRoleModel)(nil).FindOne), ctx, id)
|
||||
}
|
||||
|
||||
// FindOneByUid mocks base method.
|
||||
func (m *MockuserRoleModel) FindOneByUid(ctx context.Context, uid string) (*model.UserRole, error) {
|
||||
m.ctrl.T.Helper()
|
||||
ret := m.ctrl.Call(m, "FindOneByUid", ctx, uid)
|
||||
ret0, _ := ret[0].(*model.UserRole)
|
||||
ret1, _ := ret[1].(error)
|
||||
return ret0, ret1
|
||||
}
|
||||
|
||||
// FindOneByUid indicates an expected call of FindOneByUid.
|
||||
func (mr *MockuserRoleModelMockRecorder) FindOneByUid(ctx, uid any) *gomock.Call {
|
||||
mr.mock.ctrl.T.Helper()
|
||||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "FindOneByUid", reflect.TypeOf((*MockuserRoleModel)(nil).FindOneByUid), ctx, uid)
|
||||
}
|
||||
|
||||
// Insert mocks base method.
|
||||
func (m *MockuserRoleModel) Insert(ctx context.Context, data *model.UserRole) (sql.Result, error) {
|
||||
m.ctrl.T.Helper()
|
||||
ret := m.ctrl.Call(m, "Insert", ctx, data)
|
||||
ret0, _ := ret[0].(sql.Result)
|
||||
ret1, _ := ret[1].(error)
|
||||
return ret0, ret1
|
||||
}
|
||||
|
||||
// Insert indicates an expected call of Insert.
|
||||
func (mr *MockuserRoleModelMockRecorder) Insert(ctx, data any) *gomock.Call {
|
||||
mr.mock.ctrl.T.Helper()
|
||||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Insert", reflect.TypeOf((*MockuserRoleModel)(nil).Insert), ctx, data)
|
||||
}
|
||||
|
||||
// Update mocks base method.
|
||||
func (m *MockuserRoleModel) Update(ctx context.Context, data *model.UserRole) error {
|
||||
m.ctrl.T.Helper()
|
||||
ret := m.ctrl.Call(m, "Update", ctx, data)
|
||||
ret0, _ := ret[0].(error)
|
||||
return ret0
|
||||
}
|
||||
|
||||
// Update indicates an expected call of Update.
|
||||
func (mr *MockuserRoleModelMockRecorder) Update(ctx, data any) *gomock.Call {
|
||||
mr.mock.ctrl.T.Helper()
|
||||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Update", reflect.TypeOf((*MockuserRoleModel)(nil).Update), ctx, data)
|
||||
}
|
|
@ -0,0 +1,27 @@
|
|||
package model
|
||||
|
||||
import (
|
||||
"github.com/zeromicro/go-zero/core/stores/cache"
|
||||
"github.com/zeromicro/go-zero/core/stores/sqlx"
|
||||
)
|
||||
|
||||
var _ PermissionModel = (*customPermissionModel)(nil)
|
||||
|
||||
type (
|
||||
// PermissionModel is an interface to be customized, add more methods here,
|
||||
// and implement the added methods in customPermissionModel.
|
||||
PermissionModel interface {
|
||||
permissionModel
|
||||
}
|
||||
|
||||
customPermissionModel struct {
|
||||
*defaultPermissionModel
|
||||
}
|
||||
)
|
||||
|
||||
// NewPermissionModel returns a model for the database table.
|
||||
func NewPermissionModel(conn sqlx.SqlConn, c cache.CacheConf, opts ...cache.Option) PermissionModel {
|
||||
return &customPermissionModel{
|
||||
defaultPermissionModel: newPermissionModel(conn, c, opts...),
|
||||
}
|
||||
}
|
|
@ -0,0 +1,157 @@
|
|||
// Code generated by goctl. DO NOT EDIT.
|
||||
|
||||
package model
|
||||
|
||||
import (
|
||||
"context"
|
||||
"database/sql"
|
||||
"fmt"
|
||||
"strings"
|
||||
|
||||
"github.com/zeromicro/go-zero/core/stores/builder"
|
||||
"github.com/zeromicro/go-zero/core/stores/cache"
|
||||
"github.com/zeromicro/go-zero/core/stores/sqlc"
|
||||
"github.com/zeromicro/go-zero/core/stores/sqlx"
|
||||
"github.com/zeromicro/go-zero/core/stringx"
|
||||
)
|
||||
|
||||
var (
|
||||
permissionFieldNames = builder.RawFieldNames(&Permission{})
|
||||
permissionRows = strings.Join(permissionFieldNames, ",")
|
||||
permissionRowsExpectAutoSet = strings.Join(stringx.Remove(permissionFieldNames, "`id`"), ",")
|
||||
permissionRowsWithPlaceHolder = strings.Join(stringx.Remove(permissionFieldNames, "`id`"), "=?,") + "=?"
|
||||
|
||||
cachePermissionIdPrefix = "cache:permission:id:"
|
||||
cachePermissionNamePrefix = "cache:permission:name:"
|
||||
)
|
||||
|
||||
type (
|
||||
permissionModel interface {
|
||||
Insert(ctx context.Context, data *Permission) (sql.Result, error)
|
||||
FindOne(ctx context.Context, id int64) (*Permission, error)
|
||||
FindOneByName(ctx context.Context, name string) (*Permission, error)
|
||||
Update(ctx context.Context, data *Permission) error
|
||||
Delete(ctx context.Context, id int64) error
|
||||
}
|
||||
|
||||
defaultPermissionModel struct {
|
||||
sqlc.CachedConn
|
||||
table string
|
||||
}
|
||||
|
||||
Permission struct {
|
||||
Id int64 `db:"id"` // PK
|
||||
Parent sql.NullInt64 `db:"parent"`
|
||||
Name string `db:"name"`
|
||||
HttpMethod string `db:"http_method"`
|
||||
HttpPath string `db:"http_path"`
|
||||
Status int64 `db:"status"` // 狀態 1: 啟用, 2: 關閉
|
||||
Type int64 `db:"type"` // 狀態 1: 後台, 2: 前台
|
||||
CreateTime int64 `db:"create_time"` // 創建時間
|
||||
UpdateTime int64 `db:"update_time"` // 更新時間
|
||||
}
|
||||
)
|
||||
|
||||
func newPermissionModel(conn sqlx.SqlConn, c cache.CacheConf, opts ...cache.Option) *defaultPermissionModel {
|
||||
return &defaultPermissionModel{
|
||||
CachedConn: sqlc.NewConn(conn, c, opts...),
|
||||
table: "`permission`",
|
||||
}
|
||||
}
|
||||
|
||||
func (m *defaultPermissionModel) withSession(session sqlx.Session) *defaultPermissionModel {
|
||||
return &defaultPermissionModel{
|
||||
CachedConn: m.CachedConn.WithSession(session),
|
||||
table: "`permission`",
|
||||
}
|
||||
}
|
||||
|
||||
func (m *defaultPermissionModel) Delete(ctx context.Context, id int64) error {
|
||||
data, err := m.FindOne(ctx, id)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
permissionIdKey := fmt.Sprintf("%s%v", cachePermissionIdPrefix, id)
|
||||
permissionNameKey := fmt.Sprintf("%s%v", cachePermissionNamePrefix, data.Name)
|
||||
_, err = m.ExecCtx(ctx, func(ctx context.Context, conn sqlx.SqlConn) (result sql.Result, err error) {
|
||||
query := fmt.Sprintf("delete from %s where `id` = ?", m.table)
|
||||
return conn.ExecCtx(ctx, query, id)
|
||||
}, permissionIdKey, permissionNameKey)
|
||||
return err
|
||||
}
|
||||
|
||||
func (m *defaultPermissionModel) FindOne(ctx context.Context, id int64) (*Permission, error) {
|
||||
permissionIdKey := fmt.Sprintf("%s%v", cachePermissionIdPrefix, id)
|
||||
var resp Permission
|
||||
err := m.QueryRowCtx(ctx, &resp, permissionIdKey, func(ctx context.Context, conn sqlx.SqlConn, v any) error {
|
||||
query := fmt.Sprintf("select %s from %s where `id` = ? limit 1", permissionRows, m.table)
|
||||
return conn.QueryRowCtx(ctx, v, query, id)
|
||||
})
|
||||
switch err {
|
||||
case nil:
|
||||
return &resp, nil
|
||||
case sqlc.ErrNotFound:
|
||||
return nil, ErrNotFound
|
||||
default:
|
||||
return nil, err
|
||||
}
|
||||
}
|
||||
|
||||
func (m *defaultPermissionModel) FindOneByName(ctx context.Context, name string) (*Permission, error) {
|
||||
permissionNameKey := fmt.Sprintf("%s%v", cachePermissionNamePrefix, name)
|
||||
var resp Permission
|
||||
err := m.QueryRowIndexCtx(ctx, &resp, permissionNameKey, m.formatPrimary, func(ctx context.Context, conn sqlx.SqlConn, v any) (i any, e error) {
|
||||
query := fmt.Sprintf("select %s from %s where `name` = ? limit 1", permissionRows, m.table)
|
||||
if err := conn.QueryRowCtx(ctx, &resp, query, name); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return resp.Id, nil
|
||||
}, m.queryPrimary)
|
||||
switch err {
|
||||
case nil:
|
||||
return &resp, nil
|
||||
case sqlc.ErrNotFound:
|
||||
return nil, ErrNotFound
|
||||
default:
|
||||
return nil, err
|
||||
}
|
||||
}
|
||||
|
||||
func (m *defaultPermissionModel) Insert(ctx context.Context, data *Permission) (sql.Result, error) {
|
||||
permissionIdKey := fmt.Sprintf("%s%v", cachePermissionIdPrefix, data.Id)
|
||||
permissionNameKey := fmt.Sprintf("%s%v", cachePermissionNamePrefix, data.Name)
|
||||
ret, err := m.ExecCtx(ctx, func(ctx context.Context, conn sqlx.SqlConn) (result sql.Result, err error) {
|
||||
query := fmt.Sprintf("insert into %s (%s) values (?, ?, ?, ?, ?, ?, ?, ?)", m.table, permissionRowsExpectAutoSet)
|
||||
return conn.ExecCtx(ctx, query, data.Parent, data.Name, data.HttpMethod, data.HttpPath, data.Status, data.Type, data.CreateTime, data.UpdateTime)
|
||||
}, permissionIdKey, permissionNameKey)
|
||||
return ret, err
|
||||
}
|
||||
|
||||
func (m *defaultPermissionModel) Update(ctx context.Context, newData *Permission) error {
|
||||
data, err := m.FindOne(ctx, newData.Id)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
permissionIdKey := fmt.Sprintf("%s%v", cachePermissionIdPrefix, data.Id)
|
||||
permissionNameKey := fmt.Sprintf("%s%v", cachePermissionNamePrefix, data.Name)
|
||||
_, err = m.ExecCtx(ctx, func(ctx context.Context, conn sqlx.SqlConn) (result sql.Result, err error) {
|
||||
query := fmt.Sprintf("update %s set %s where `id` = ?", m.table, permissionRowsWithPlaceHolder)
|
||||
return conn.ExecCtx(ctx, query, newData.Parent, newData.Name, newData.HttpMethod, newData.HttpPath, newData.Status, newData.Type, newData.CreateTime, newData.UpdateTime, newData.Id)
|
||||
}, permissionIdKey, permissionNameKey)
|
||||
return err
|
||||
}
|
||||
|
||||
func (m *defaultPermissionModel) formatPrimary(primary any) string {
|
||||
return fmt.Sprintf("%s%v", cachePermissionIdPrefix, primary)
|
||||
}
|
||||
|
||||
func (m *defaultPermissionModel) queryPrimary(ctx context.Context, conn sqlx.SqlConn, v, primary any) error {
|
||||
query := fmt.Sprintf("select %s from %s where `id` = ? limit 1", permissionRows, m.table)
|
||||
return conn.QueryRowCtx(ctx, v, query, primary)
|
||||
}
|
||||
|
||||
func (m *defaultPermissionModel) tableName() string {
|
||||
return m.table
|
||||
}
|
|
@ -0,0 +1,27 @@
|
|||
package model
|
||||
|
||||
import (
|
||||
"github.com/zeromicro/go-zero/core/stores/cache"
|
||||
"github.com/zeromicro/go-zero/core/stores/sqlx"
|
||||
)
|
||||
|
||||
var _ RoleModel = (*customRoleModel)(nil)
|
||||
|
||||
type (
|
||||
// RoleModel is an interface to be customized, add more methods here,
|
||||
// and implement the added methods in customRoleModel.
|
||||
RoleModel interface {
|
||||
roleModel
|
||||
}
|
||||
|
||||
customRoleModel struct {
|
||||
*defaultRoleModel
|
||||
}
|
||||
)
|
||||
|
||||
// NewRoleModel returns a model for the database table.
|
||||
func NewRoleModel(conn sqlx.SqlConn, c cache.CacheConf, opts ...cache.Option) RoleModel {
|
||||
return &customRoleModel{
|
||||
defaultRoleModel: newRoleModel(conn, c, opts...),
|
||||
}
|
||||
}
|
|
@ -0,0 +1,179 @@
|
|||
// Code generated by goctl. DO NOT EDIT.
|
||||
|
||||
package model
|
||||
|
||||
import (
|
||||
"context"
|
||||
"database/sql"
|
||||
"fmt"
|
||||
"strings"
|
||||
|
||||
"github.com/zeromicro/go-zero/core/stores/builder"
|
||||
"github.com/zeromicro/go-zero/core/stores/cache"
|
||||
"github.com/zeromicro/go-zero/core/stores/sqlc"
|
||||
"github.com/zeromicro/go-zero/core/stores/sqlx"
|
||||
"github.com/zeromicro/go-zero/core/stringx"
|
||||
)
|
||||
|
||||
var (
|
||||
roleFieldNames = builder.RawFieldNames(&Role{})
|
||||
roleRows = strings.Join(roleFieldNames, ",")
|
||||
roleRowsExpectAutoSet = strings.Join(stringx.Remove(roleFieldNames, "`id`"), ",")
|
||||
roleRowsWithPlaceHolder = strings.Join(stringx.Remove(roleFieldNames, "`id`"), "=?,") + "=?"
|
||||
|
||||
cacheRoleIdPrefix = "cache:role:id:"
|
||||
cacheRoleDisplayNamePrefix = "cache:role:displayName:"
|
||||
cacheRoleRoleIdPrefix = "cache:role:roleId:"
|
||||
)
|
||||
|
||||
type (
|
||||
roleModel interface {
|
||||
Insert(ctx context.Context, data *Role) (sql.Result, error)
|
||||
FindOne(ctx context.Context, id int64) (*Role, error)
|
||||
FindOneByDisplayName(ctx context.Context, displayName string) (*Role, error)
|
||||
FindOneByRoleId(ctx context.Context, roleId string) (*Role, error)
|
||||
Update(ctx context.Context, data *Role) error
|
||||
Delete(ctx context.Context, id int64) error
|
||||
}
|
||||
|
||||
defaultRoleModel struct {
|
||||
sqlc.CachedConn
|
||||
table string
|
||||
}
|
||||
|
||||
Role struct {
|
||||
Id int64 `db:"id"` // PK
|
||||
RoleId string `db:"role_id"`
|
||||
DisplayName string `db:"display_name"` // 名稱
|
||||
Status int64 `db:"status"` // 狀態 1: 啟用, 2: 禁用
|
||||
CreateTime int64 `db:"create_time"` // 創建時間
|
||||
UpdateTime int64 `db:"update_time"` // 更新時間
|
||||
}
|
||||
)
|
||||
|
||||
func newRoleModel(conn sqlx.SqlConn, c cache.CacheConf, opts ...cache.Option) *defaultRoleModel {
|
||||
return &defaultRoleModel{
|
||||
CachedConn: sqlc.NewConn(conn, c, opts...),
|
||||
table: "`role`",
|
||||
}
|
||||
}
|
||||
|
||||
func (m *defaultRoleModel) withSession(session sqlx.Session) *defaultRoleModel {
|
||||
return &defaultRoleModel{
|
||||
CachedConn: m.CachedConn.WithSession(session),
|
||||
table: "`role`",
|
||||
}
|
||||
}
|
||||
|
||||
func (m *defaultRoleModel) Delete(ctx context.Context, id int64) error {
|
||||
data, err := m.FindOne(ctx, id)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
roleDisplayNameKey := fmt.Sprintf("%s%v", cacheRoleDisplayNamePrefix, data.DisplayName)
|
||||
roleIdKey := fmt.Sprintf("%s%v", cacheRoleIdPrefix, id)
|
||||
roleRoleIdKey := fmt.Sprintf("%s%v", cacheRoleRoleIdPrefix, data.RoleId)
|
||||
_, err = m.ExecCtx(ctx, func(ctx context.Context, conn sqlx.SqlConn) (result sql.Result, err error) {
|
||||
query := fmt.Sprintf("delete from %s where `id` = ?", m.table)
|
||||
return conn.ExecCtx(ctx, query, id)
|
||||
}, roleDisplayNameKey, roleIdKey, roleRoleIdKey)
|
||||
return err
|
||||
}
|
||||
|
||||
func (m *defaultRoleModel) FindOne(ctx context.Context, id int64) (*Role, error) {
|
||||
roleIdKey := fmt.Sprintf("%s%v", cacheRoleIdPrefix, id)
|
||||
var resp Role
|
||||
err := m.QueryRowCtx(ctx, &resp, roleIdKey, func(ctx context.Context, conn sqlx.SqlConn, v any) error {
|
||||
query := fmt.Sprintf("select %s from %s where `id` = ? limit 1", roleRows, m.table)
|
||||
return conn.QueryRowCtx(ctx, v, query, id)
|
||||
})
|
||||
switch err {
|
||||
case nil:
|
||||
return &resp, nil
|
||||
case sqlc.ErrNotFound:
|
||||
return nil, ErrNotFound
|
||||
default:
|
||||
return nil, err
|
||||
}
|
||||
}
|
||||
|
||||
func (m *defaultRoleModel) FindOneByDisplayName(ctx context.Context, displayName string) (*Role, error) {
|
||||
roleDisplayNameKey := fmt.Sprintf("%s%v", cacheRoleDisplayNamePrefix, displayName)
|
||||
var resp Role
|
||||
err := m.QueryRowIndexCtx(ctx, &resp, roleDisplayNameKey, m.formatPrimary, func(ctx context.Context, conn sqlx.SqlConn, v any) (i any, e error) {
|
||||
query := fmt.Sprintf("select %s from %s where `display_name` = ? limit 1", roleRows, m.table)
|
||||
if err := conn.QueryRowCtx(ctx, &resp, query, displayName); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return resp.Id, nil
|
||||
}, m.queryPrimary)
|
||||
switch err {
|
||||
case nil:
|
||||
return &resp, nil
|
||||
case sqlc.ErrNotFound:
|
||||
return nil, ErrNotFound
|
||||
default:
|
||||
return nil, err
|
||||
}
|
||||
}
|
||||
|
||||
func (m *defaultRoleModel) FindOneByRoleId(ctx context.Context, roleId string) (*Role, error) {
|
||||
roleRoleIdKey := fmt.Sprintf("%s%v", cacheRoleRoleIdPrefix, roleId)
|
||||
var resp Role
|
||||
err := m.QueryRowIndexCtx(ctx, &resp, roleRoleIdKey, m.formatPrimary, func(ctx context.Context, conn sqlx.SqlConn, v any) (i any, e error) {
|
||||
query := fmt.Sprintf("select %s from %s where `role_id` = ? limit 1", roleRows, m.table)
|
||||
if err := conn.QueryRowCtx(ctx, &resp, query, roleId); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return resp.Id, nil
|
||||
}, m.queryPrimary)
|
||||
switch err {
|
||||
case nil:
|
||||
return &resp, nil
|
||||
case sqlc.ErrNotFound:
|
||||
return nil, ErrNotFound
|
||||
default:
|
||||
return nil, err
|
||||
}
|
||||
}
|
||||
|
||||
func (m *defaultRoleModel) Insert(ctx context.Context, data *Role) (sql.Result, error) {
|
||||
roleDisplayNameKey := fmt.Sprintf("%s%v", cacheRoleDisplayNamePrefix, data.DisplayName)
|
||||
roleIdKey := fmt.Sprintf("%s%v", cacheRoleIdPrefix, data.Id)
|
||||
roleRoleIdKey := fmt.Sprintf("%s%v", cacheRoleRoleIdPrefix, data.RoleId)
|
||||
ret, err := m.ExecCtx(ctx, func(ctx context.Context, conn sqlx.SqlConn) (result sql.Result, err error) {
|
||||
query := fmt.Sprintf("insert into %s (%s) values (?, ?, ?, ?, ?)", m.table, roleRowsExpectAutoSet)
|
||||
return conn.ExecCtx(ctx, query, data.RoleId, data.DisplayName, data.Status, data.CreateTime, data.UpdateTime)
|
||||
}, roleDisplayNameKey, roleIdKey, roleRoleIdKey)
|
||||
return ret, err
|
||||
}
|
||||
|
||||
func (m *defaultRoleModel) Update(ctx context.Context, newData *Role) error {
|
||||
data, err := m.FindOne(ctx, newData.Id)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
roleDisplayNameKey := fmt.Sprintf("%s%v", cacheRoleDisplayNamePrefix, data.DisplayName)
|
||||
roleIdKey := fmt.Sprintf("%s%v", cacheRoleIdPrefix, data.Id)
|
||||
roleRoleIdKey := fmt.Sprintf("%s%v", cacheRoleRoleIdPrefix, data.RoleId)
|
||||
_, err = m.ExecCtx(ctx, func(ctx context.Context, conn sqlx.SqlConn) (result sql.Result, err error) {
|
||||
query := fmt.Sprintf("update %s set %s where `id` = ?", m.table, roleRowsWithPlaceHolder)
|
||||
return conn.ExecCtx(ctx, query, newData.RoleId, newData.DisplayName, newData.Status, newData.CreateTime, newData.UpdateTime, newData.Id)
|
||||
}, roleDisplayNameKey, roleIdKey, roleRoleIdKey)
|
||||
return err
|
||||
}
|
||||
|
||||
func (m *defaultRoleModel) formatPrimary(primary any) string {
|
||||
return fmt.Sprintf("%s%v", cacheRoleIdPrefix, primary)
|
||||
}
|
||||
|
||||
func (m *defaultRoleModel) queryPrimary(ctx context.Context, conn sqlx.SqlConn, v, primary any) error {
|
||||
query := fmt.Sprintf("select %s from %s where `id` = ? limit 1", roleRows, m.table)
|
||||
return conn.QueryRowCtx(ctx, v, query, primary)
|
||||
}
|
||||
|
||||
func (m *defaultRoleModel) tableName() string {
|
||||
return m.table
|
||||
}
|
|
@ -0,0 +1,27 @@
|
|||
package model
|
||||
|
||||
import (
|
||||
"github.com/zeromicro/go-zero/core/stores/cache"
|
||||
"github.com/zeromicro/go-zero/core/stores/sqlx"
|
||||
)
|
||||
|
||||
var _ RolePermissionModel = (*customRolePermissionModel)(nil)
|
||||
|
||||
type (
|
||||
// RolePermissionModel is an interface to be customized, add more methods here,
|
||||
// and implement the added methods in customRolePermissionModel.
|
||||
RolePermissionModel interface {
|
||||
rolePermissionModel
|
||||
}
|
||||
|
||||
customRolePermissionModel struct {
|
||||
*defaultRolePermissionModel
|
||||
}
|
||||
)
|
||||
|
||||
// NewRolePermissionModel returns a model for the database table.
|
||||
func NewRolePermissionModel(conn sqlx.SqlConn, c cache.CacheConf, opts ...cache.Option) RolePermissionModel {
|
||||
return &customRolePermissionModel{
|
||||
defaultRolePermissionModel: newRolePermissionModel(conn, c, opts...),
|
||||
}
|
||||
}
|
|
@ -0,0 +1,118 @@
|
|||
// Code generated by goctl. DO NOT EDIT.
|
||||
|
||||
package model
|
||||
|
||||
import (
|
||||
"context"
|
||||
"database/sql"
|
||||
"fmt"
|
||||
"strings"
|
||||
|
||||
"github.com/zeromicro/go-zero/core/stores/builder"
|
||||
"github.com/zeromicro/go-zero/core/stores/cache"
|
||||
"github.com/zeromicro/go-zero/core/stores/sqlc"
|
||||
"github.com/zeromicro/go-zero/core/stores/sqlx"
|
||||
"github.com/zeromicro/go-zero/core/stringx"
|
||||
)
|
||||
|
||||
var (
|
||||
rolePermissionFieldNames = builder.RawFieldNames(&RolePermission{})
|
||||
rolePermissionRows = strings.Join(rolePermissionFieldNames, ",")
|
||||
rolePermissionRowsExpectAutoSet = strings.Join(stringx.Remove(rolePermissionFieldNames, "`id`"), ",")
|
||||
rolePermissionRowsWithPlaceHolder = strings.Join(stringx.Remove(rolePermissionFieldNames, "`id`"), "=?,") + "=?"
|
||||
|
||||
cacheRolePermissionIdPrefix = "cache:rolePermission:id:"
|
||||
)
|
||||
|
||||
type (
|
||||
rolePermissionModel interface {
|
||||
Insert(ctx context.Context, data *RolePermission) (sql.Result, error)
|
||||
FindOne(ctx context.Context, id int64) (*RolePermission, error)
|
||||
Update(ctx context.Context, data *RolePermission) error
|
||||
Delete(ctx context.Context, id int64) error
|
||||
}
|
||||
|
||||
defaultRolePermissionModel struct {
|
||||
sqlc.CachedConn
|
||||
table string
|
||||
}
|
||||
|
||||
RolePermission struct {
|
||||
Id int64 `db:"id"` // PK
|
||||
RoleId sql.NullInt64 `db:"role_id"` // role.id
|
||||
PermissionId sql.NullInt64 `db:"permission_id"` // permission.id
|
||||
CreateTime int64 `db:"create_time"` // 創建時間
|
||||
UpdateTime int64 `db:"update_time"` // 更新時間
|
||||
}
|
||||
)
|
||||
|
||||
func newRolePermissionModel(conn sqlx.SqlConn, c cache.CacheConf, opts ...cache.Option) *defaultRolePermissionModel {
|
||||
return &defaultRolePermissionModel{
|
||||
CachedConn: sqlc.NewConn(conn, c, opts...),
|
||||
table: "`role_permission`",
|
||||
}
|
||||
}
|
||||
|
||||
func (m *defaultRolePermissionModel) withSession(session sqlx.Session) *defaultRolePermissionModel {
|
||||
return &defaultRolePermissionModel{
|
||||
CachedConn: m.CachedConn.WithSession(session),
|
||||
table: "`role_permission`",
|
||||
}
|
||||
}
|
||||
|
||||
func (m *defaultRolePermissionModel) Delete(ctx context.Context, id int64) error {
|
||||
rolePermissionIdKey := fmt.Sprintf("%s%v", cacheRolePermissionIdPrefix, id)
|
||||
_, err := m.ExecCtx(ctx, func(ctx context.Context, conn sqlx.SqlConn) (result sql.Result, err error) {
|
||||
query := fmt.Sprintf("delete from %s where `id` = ?", m.table)
|
||||
return conn.ExecCtx(ctx, query, id)
|
||||
}, rolePermissionIdKey)
|
||||
return err
|
||||
}
|
||||
|
||||
func (m *defaultRolePermissionModel) FindOne(ctx context.Context, id int64) (*RolePermission, error) {
|
||||
rolePermissionIdKey := fmt.Sprintf("%s%v", cacheRolePermissionIdPrefix, id)
|
||||
var resp RolePermission
|
||||
err := m.QueryRowCtx(ctx, &resp, rolePermissionIdKey, func(ctx context.Context, conn sqlx.SqlConn, v any) error {
|
||||
query := fmt.Sprintf("select %s from %s where `id` = ? limit 1", rolePermissionRows, m.table)
|
||||
return conn.QueryRowCtx(ctx, v, query, id)
|
||||
})
|
||||
switch err {
|
||||
case nil:
|
||||
return &resp, nil
|
||||
case sqlc.ErrNotFound:
|
||||
return nil, ErrNotFound
|
||||
default:
|
||||
return nil, err
|
||||
}
|
||||
}
|
||||
|
||||
func (m *defaultRolePermissionModel) Insert(ctx context.Context, data *RolePermission) (sql.Result, error) {
|
||||
rolePermissionIdKey := fmt.Sprintf("%s%v", cacheRolePermissionIdPrefix, data.Id)
|
||||
ret, err := m.ExecCtx(ctx, func(ctx context.Context, conn sqlx.SqlConn) (result sql.Result, err error) {
|
||||
query := fmt.Sprintf("insert into %s (%s) values (?, ?, ?, ?)", m.table, rolePermissionRowsExpectAutoSet)
|
||||
return conn.ExecCtx(ctx, query, data.RoleId, data.PermissionId, data.CreateTime, data.UpdateTime)
|
||||
}, rolePermissionIdKey)
|
||||
return ret, err
|
||||
}
|
||||
|
||||
func (m *defaultRolePermissionModel) Update(ctx context.Context, data *RolePermission) error {
|
||||
rolePermissionIdKey := fmt.Sprintf("%s%v", cacheRolePermissionIdPrefix, data.Id)
|
||||
_, err := m.ExecCtx(ctx, func(ctx context.Context, conn sqlx.SqlConn) (result sql.Result, err error) {
|
||||
query := fmt.Sprintf("update %s set %s where `id` = ?", m.table, rolePermissionRowsWithPlaceHolder)
|
||||
return conn.ExecCtx(ctx, query, data.RoleId, data.PermissionId, data.CreateTime, data.UpdateTime, data.Id)
|
||||
}, rolePermissionIdKey)
|
||||
return err
|
||||
}
|
||||
|
||||
func (m *defaultRolePermissionModel) formatPrimary(primary any) string {
|
||||
return fmt.Sprintf("%s%v", cacheRolePermissionIdPrefix, primary)
|
||||
}
|
||||
|
||||
func (m *defaultRolePermissionModel) queryPrimary(ctx context.Context, conn sqlx.SqlConn, v, primary any) error {
|
||||
query := fmt.Sprintf("select %s from %s where `id` = ? limit 1", rolePermissionRows, m.table)
|
||||
return conn.QueryRowCtx(ctx, v, query, primary)
|
||||
}
|
||||
|
||||
func (m *defaultRolePermissionModel) tableName() string {
|
||||
return m.table
|
||||
}
|
|
@ -0,0 +1,27 @@
|
|||
package model
|
||||
|
||||
import (
|
||||
"github.com/zeromicro/go-zero/core/stores/cache"
|
||||
"github.com/zeromicro/go-zero/core/stores/sqlx"
|
||||
)
|
||||
|
||||
var _ UserRoleModel = (*customUserRoleModel)(nil)
|
||||
|
||||
type (
|
||||
// UserRoleModel is an interface to be customized, add more methods here,
|
||||
// and implement the added methods in customUserRoleModel.
|
||||
UserRoleModel interface {
|
||||
userRoleModel
|
||||
}
|
||||
|
||||
customUserRoleModel struct {
|
||||
*defaultUserRoleModel
|
||||
}
|
||||
)
|
||||
|
||||
// NewUserRoleModel returns a model for the database table.
|
||||
func NewUserRoleModel(conn sqlx.SqlConn, c cache.CacheConf, opts ...cache.Option) UserRoleModel {
|
||||
return &customUserRoleModel{
|
||||
defaultUserRoleModel: newUserRoleModel(conn, c, opts...),
|
||||
}
|
||||
}
|
|
@ -0,0 +1,155 @@
|
|||
// Code generated by goctl. DO NOT EDIT.
|
||||
|
||||
package model
|
||||
|
||||
import (
|
||||
"context"
|
||||
"database/sql"
|
||||
"fmt"
|
||||
"strings"
|
||||
|
||||
"github.com/zeromicro/go-zero/core/stores/builder"
|
||||
"github.com/zeromicro/go-zero/core/stores/cache"
|
||||
"github.com/zeromicro/go-zero/core/stores/sqlc"
|
||||
"github.com/zeromicro/go-zero/core/stores/sqlx"
|
||||
"github.com/zeromicro/go-zero/core/stringx"
|
||||
)
|
||||
|
||||
var (
|
||||
userRoleFieldNames = builder.RawFieldNames(&UserRole{})
|
||||
userRoleRows = strings.Join(userRoleFieldNames, ",")
|
||||
userRoleRowsExpectAutoSet = strings.Join(stringx.Remove(userRoleFieldNames, "`id`"), ",")
|
||||
userRoleRowsWithPlaceHolder = strings.Join(stringx.Remove(userRoleFieldNames, "`id`"), "=?,") + "=?"
|
||||
|
||||
cacheUserRoleIdPrefix = "cache:userRole:id:"
|
||||
cacheUserRoleUidPrefix = "cache:userRole:uid:"
|
||||
)
|
||||
|
||||
type (
|
||||
userRoleModel interface {
|
||||
Insert(ctx context.Context, data *UserRole) (sql.Result, error)
|
||||
FindOne(ctx context.Context, id int64) (*UserRole, error)
|
||||
FindOneByUid(ctx context.Context, uid string) (*UserRole, error)
|
||||
Update(ctx context.Context, data *UserRole) error
|
||||
Delete(ctx context.Context, id int64) error
|
||||
}
|
||||
|
||||
defaultUserRoleModel struct {
|
||||
sqlc.CachedConn
|
||||
table string
|
||||
}
|
||||
|
||||
UserRole struct {
|
||||
Id int64 `db:"id"` // PK
|
||||
Brand string `db:"brand"`
|
||||
Uid string `db:"uid"`
|
||||
RoleId string `db:"role_id"`
|
||||
Status int64 `db:"status"` // 狀態 1: 啟用, 2: 禁用
|
||||
CreateTime int64 `db:"create_time"` // 創建時間
|
||||
UpdateTime int64 `db:"update_time"` // 更新時間
|
||||
}
|
||||
)
|
||||
|
||||
func newUserRoleModel(conn sqlx.SqlConn, c cache.CacheConf, opts ...cache.Option) *defaultUserRoleModel {
|
||||
return &defaultUserRoleModel{
|
||||
CachedConn: sqlc.NewConn(conn, c, opts...),
|
||||
table: "`user_role`",
|
||||
}
|
||||
}
|
||||
|
||||
func (m *defaultUserRoleModel) withSession(session sqlx.Session) *defaultUserRoleModel {
|
||||
return &defaultUserRoleModel{
|
||||
CachedConn: m.CachedConn.WithSession(session),
|
||||
table: "`user_role`",
|
||||
}
|
||||
}
|
||||
|
||||
func (m *defaultUserRoleModel) Delete(ctx context.Context, id int64) error {
|
||||
data, err := m.FindOne(ctx, id)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
userRoleIdKey := fmt.Sprintf("%s%v", cacheUserRoleIdPrefix, id)
|
||||
userRoleUidKey := fmt.Sprintf("%s%v", cacheUserRoleUidPrefix, data.Uid)
|
||||
_, err = m.ExecCtx(ctx, func(ctx context.Context, conn sqlx.SqlConn) (result sql.Result, err error) {
|
||||
query := fmt.Sprintf("delete from %s where `id` = ?", m.table)
|
||||
return conn.ExecCtx(ctx, query, id)
|
||||
}, userRoleIdKey, userRoleUidKey)
|
||||
return err
|
||||
}
|
||||
|
||||
func (m *defaultUserRoleModel) FindOne(ctx context.Context, id int64) (*UserRole, error) {
|
||||
userRoleIdKey := fmt.Sprintf("%s%v", cacheUserRoleIdPrefix, id)
|
||||
var resp UserRole
|
||||
err := m.QueryRowCtx(ctx, &resp, userRoleIdKey, func(ctx context.Context, conn sqlx.SqlConn, v any) error {
|
||||
query := fmt.Sprintf("select %s from %s where `id` = ? limit 1", userRoleRows, m.table)
|
||||
return conn.QueryRowCtx(ctx, v, query, id)
|
||||
})
|
||||
switch err {
|
||||
case nil:
|
||||
return &resp, nil
|
||||
case sqlc.ErrNotFound:
|
||||
return nil, ErrNotFound
|
||||
default:
|
||||
return nil, err
|
||||
}
|
||||
}
|
||||
|
||||
func (m *defaultUserRoleModel) FindOneByUid(ctx context.Context, uid string) (*UserRole, error) {
|
||||
userRoleUidKey := fmt.Sprintf("%s%v", cacheUserRoleUidPrefix, uid)
|
||||
var resp UserRole
|
||||
err := m.QueryRowIndexCtx(ctx, &resp, userRoleUidKey, m.formatPrimary, func(ctx context.Context, conn sqlx.SqlConn, v any) (i any, e error) {
|
||||
query := fmt.Sprintf("select %s from %s where `uid` = ? limit 1", userRoleRows, m.table)
|
||||
if err := conn.QueryRowCtx(ctx, &resp, query, uid); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return resp.Id, nil
|
||||
}, m.queryPrimary)
|
||||
switch err {
|
||||
case nil:
|
||||
return &resp, nil
|
||||
case sqlc.ErrNotFound:
|
||||
return nil, ErrNotFound
|
||||
default:
|
||||
return nil, err
|
||||
}
|
||||
}
|
||||
|
||||
func (m *defaultUserRoleModel) Insert(ctx context.Context, data *UserRole) (sql.Result, error) {
|
||||
userRoleIdKey := fmt.Sprintf("%s%v", cacheUserRoleIdPrefix, data.Id)
|
||||
userRoleUidKey := fmt.Sprintf("%s%v", cacheUserRoleUidPrefix, data.Uid)
|
||||
ret, err := m.ExecCtx(ctx, func(ctx context.Context, conn sqlx.SqlConn) (result sql.Result, err error) {
|
||||
query := fmt.Sprintf("insert into %s (%s) values (?, ?, ?, ?, ?, ?)", m.table, userRoleRowsExpectAutoSet)
|
||||
return conn.ExecCtx(ctx, query, data.Brand, data.Uid, data.RoleId, data.Status, data.CreateTime, data.UpdateTime)
|
||||
}, userRoleIdKey, userRoleUidKey)
|
||||
return ret, err
|
||||
}
|
||||
|
||||
func (m *defaultUserRoleModel) Update(ctx context.Context, newData *UserRole) error {
|
||||
data, err := m.FindOne(ctx, newData.Id)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
userRoleIdKey := fmt.Sprintf("%s%v", cacheUserRoleIdPrefix, data.Id)
|
||||
userRoleUidKey := fmt.Sprintf("%s%v", cacheUserRoleUidPrefix, data.Uid)
|
||||
_, err = m.ExecCtx(ctx, func(ctx context.Context, conn sqlx.SqlConn) (result sql.Result, err error) {
|
||||
query := fmt.Sprintf("update %s set %s where `id` = ?", m.table, userRoleRowsWithPlaceHolder)
|
||||
return conn.ExecCtx(ctx, query, newData.Brand, newData.Uid, newData.RoleId, newData.Status, newData.CreateTime, newData.UpdateTime, newData.Id)
|
||||
}, userRoleIdKey, userRoleUidKey)
|
||||
return err
|
||||
}
|
||||
|
||||
func (m *defaultUserRoleModel) formatPrimary(primary any) string {
|
||||
return fmt.Sprintf("%s%v", cacheUserRoleIdPrefix, primary)
|
||||
}
|
||||
|
||||
func (m *defaultUserRoleModel) queryPrimary(ctx context.Context, conn sqlx.SqlConn, v, primary any) error {
|
||||
query := fmt.Sprintf("select %s from %s where `id` = ? limit 1", userRoleRows, m.table)
|
||||
return conn.QueryRowCtx(ctx, v, query, primary)
|
||||
}
|
||||
|
||||
func (m *defaultUserRoleModel) tableName() string {
|
||||
return m.table
|
||||
}
|
|
@ -0,0 +1,5 @@
|
|||
package model
|
||||
|
||||
import "github.com/zeromicro/go-zero/core/stores/sqlx"
|
||||
|
||||
var ErrNotFound = sqlx.ErrNotFound
|
|
@ -0,0 +1,83 @@
|
|||
// Code generated by goctl. DO NOT EDIT.
|
||||
// Source: service.proto
|
||||
|
||||
package server
|
||||
|
||||
import (
|
||||
"context"
|
||||
|
||||
"app-cloudep-permission-server/gen_result/pb/permission"
|
||||
"app-cloudep-permission-server/internal/logic/tokenservice"
|
||||
"app-cloudep-permission-server/internal/svc"
|
||||
)
|
||||
|
||||
type TokenServiceServer struct {
|
||||
svcCtx *svc.ServiceContext
|
||||
permission.UnimplementedTokenServiceServer
|
||||
}
|
||||
|
||||
func NewTokenServiceServer(svcCtx *svc.ServiceContext) *TokenServiceServer {
|
||||
return &TokenServiceServer{
|
||||
svcCtx: svcCtx,
|
||||
}
|
||||
}
|
||||
|
||||
// NewToken 建立一個新的 Token,例如:AccessToken
|
||||
func (s *TokenServiceServer) NewToken(ctx context.Context, in *permission.AuthorizationReq) (*permission.TokenResp, error) {
|
||||
l := tokenservicelogic.NewNewTokenLogic(ctx, s.svcCtx)
|
||||
return l.NewToken(in)
|
||||
}
|
||||
|
||||
// RefreshToken 更新目前的token 以及裡面包含的一次性 Token
|
||||
func (s *TokenServiceServer) RefreshToken(ctx context.Context, in *permission.RefreshTokenReq) (*permission.RefreshTokenResp, error) {
|
||||
l := tokenservicelogic.NewRefreshTokenLogic(ctx, s.svcCtx)
|
||||
return l.RefreshToken(in)
|
||||
}
|
||||
|
||||
// CancelToken 取消 Token,也包含他裡面的 One Time Toke
|
||||
func (s *TokenServiceServer) CancelToken(ctx context.Context, in *permission.CancelTokenReq) (*permission.OKResp, error) {
|
||||
l := tokenservicelogic.NewCancelTokenLogic(ctx, s.svcCtx)
|
||||
return l.CancelToken(in)
|
||||
}
|
||||
|
||||
// ValidationToken 驗證這個 Token 有沒有效
|
||||
func (s *TokenServiceServer) ValidationToken(ctx context.Context, in *permission.ValidationTokenReq) (*permission.ValidationTokenResp, error) {
|
||||
l := tokenservicelogic.NewValidationTokenLogic(ctx, s.svcCtx)
|
||||
return l.ValidationToken(in)
|
||||
}
|
||||
|
||||
// CancelTokens 取消 Token 從UID 視角,以及 token id 視角出發, UID 登出,底下所有 Device ID 也要登出, Token ID 登出, 所有 UID + Device 都要登出
|
||||
func (s *TokenServiceServer) CancelTokens(ctx context.Context, in *permission.DoTokenByUIDReq) (*permission.OKResp, error) {
|
||||
l := tokenservicelogic.NewCancelTokensLogic(ctx, s.svcCtx)
|
||||
return l.CancelTokens(in)
|
||||
}
|
||||
|
||||
// CancelTokenByDeviceId 取消 Token, 從 Device 視角出發,可以選,登出這個Device 下所有 token ,登出這個Device 下指定token
|
||||
func (s *TokenServiceServer) CancelTokenByDeviceId(ctx context.Context, in *permission.DoTokenByDeviceIDReq) (*permission.OKResp, error) {
|
||||
l := tokenservicelogic.NewCancelTokenByDeviceIdLogic(ctx, s.svcCtx)
|
||||
return l.CancelTokenByDeviceId(in)
|
||||
}
|
||||
|
||||
// GetUserTokensByDeviceId 取得目前所對應的 DeviceID 所存在的 Tokens
|
||||
func (s *TokenServiceServer) GetUserTokensByDeviceId(ctx context.Context, in *permission.DoTokenByDeviceIDReq) (*permission.Tokens, error) {
|
||||
l := tokenservicelogic.NewGetUserTokensByDeviceIdLogic(ctx, s.svcCtx)
|
||||
return l.GetUserTokensByDeviceId(in)
|
||||
}
|
||||
|
||||
// GetUserTokensByUid 取得目前所對應的 UID 所存在的 Tokens
|
||||
func (s *TokenServiceServer) GetUserTokensByUid(ctx context.Context, in *permission.QueryTokenByUIDReq) (*permission.Tokens, error) {
|
||||
l := tokenservicelogic.NewGetUserTokensByUidLogic(ctx, s.svcCtx)
|
||||
return l.GetUserTokensByUid(in)
|
||||
}
|
||||
|
||||
// NewOneTimeToken 建立一次性使用,例如:RefreshToken
|
||||
func (s *TokenServiceServer) NewOneTimeToken(ctx context.Context, in *permission.CreateOneTimeTokenReq) (*permission.CreateOneTimeTokenResp, error) {
|
||||
l := tokenservicelogic.NewNewOneTimeTokenLogic(ctx, s.svcCtx)
|
||||
return l.NewOneTimeToken(in)
|
||||
}
|
||||
|
||||
// CancelOneTimeToken 取消一次性使用
|
||||
func (s *TokenServiceServer) CancelOneTimeToken(ctx context.Context, in *permission.CancelOneTimeTokenReq) (*permission.OKResp, error) {
|
||||
l := tokenservicelogic.NewCancelOneTimeTokenLogic(ctx, s.svcCtx)
|
||||
return l.CancelOneTimeToken(in)
|
||||
}
|
|
@ -0,0 +1,13 @@
|
|||
package svc
|
||||
|
||||
import "app-cloudep-permission-server/internal/config"
|
||||
|
||||
type ServiceContext struct {
|
||||
Config config.Config
|
||||
}
|
||||
|
||||
func NewServiceContext(c config.Config) *ServiceContext {
|
||||
return &ServiceContext{
|
||||
Config: c,
|
||||
}
|
||||
}
|
|
@ -0,0 +1,39 @@
|
|||
package main
|
||||
|
||||
import (
|
||||
"flag"
|
||||
"fmt"
|
||||
|
||||
"app-cloudep-permission-server/gen_result/pb/permission"
|
||||
"app-cloudep-permission-server/internal/config"
|
||||
tokenserviceServer "app-cloudep-permission-server/internal/server/tokenservice"
|
||||
"app-cloudep-permission-server/internal/svc"
|
||||
|
||||
"github.com/zeromicro/go-zero/core/conf"
|
||||
"github.com/zeromicro/go-zero/core/service"
|
||||
"github.com/zeromicro/go-zero/zrpc"
|
||||
"google.golang.org/grpc"
|
||||
"google.golang.org/grpc/reflection"
|
||||
)
|
||||
|
||||
var configFile = flag.String("f", "etc/service.yaml", "the config file")
|
||||
|
||||
func main() {
|
||||
flag.Parse()
|
||||
|
||||
var c config.Config
|
||||
conf.MustLoad(*configFile, &c)
|
||||
ctx := svc.NewServiceContext(c)
|
||||
|
||||
s := zrpc.MustNewServer(c.RpcServerConf, func(grpcServer *grpc.Server) {
|
||||
permission.RegisterTokenServiceServer(grpcServer, tokenserviceServer.NewTokenServiceServer(ctx))
|
||||
|
||||
if c.Mode == service.DevMode || c.Mode == service.TestMode {
|
||||
reflection.Register(grpcServer)
|
||||
}
|
||||
})
|
||||
defer s.Stop()
|
||||
|
||||
fmt.Printf("Starting rpc server at %s...\n", c.ListenOn)
|
||||
s.Start()
|
||||
}
|
Loading…
Reference in New Issue