From a2edbf58e3e91a2747157e7f3d33326c819ac0c8 Mon Sep 17 00:00:00 2001 From: "daniel.w" Date: Tue, 20 Aug 2024 01:46:33 +0800 Subject: [PATCH] init basic project --- .gitignore | 6 +++ build/Dockerfile | 47 +++++++++++++++++++ chart/readme.md | 1 + generate/database/mongodb/readme.md | 1 + ...816014305_create_permission_table.down.sql | 1 + ...40816014305_create_permission_table.up.sql | 15 ++++++ .../20230529020000_create_schema.down.sql | 1 + .../20230529020000_create_schema.up.sql | 1 + generate/database/readme.md | 39 +++++++++++++++ .../seeder/20230620025708_init_role.down.sql | 1 + .../seeder/20230620025708_init_role.up.sql | 3 ++ generate/protobuf/demo.proto | 21 +++++++++ makefile | 0 13 files changed, 137 insertions(+) create mode 100644 .gitignore create mode 100644 build/Dockerfile create mode 100644 chart/readme.md create mode 100644 generate/database/mongodb/readme.md create mode 100644 generate/database/mysql/20240816014305_create_permission_table.down.sql create mode 100644 generate/database/mysql/20240816014305_create_permission_table.up.sql create mode 100644 generate/database/mysql/create/20230529020000_create_schema.down.sql create mode 100644 generate/database/mysql/create/20230529020000_create_schema.up.sql create mode 100644 generate/database/readme.md create mode 100644 generate/database/seeder/20230620025708_init_role.down.sql create mode 100644 generate/database/seeder/20230620025708_init_role.up.sql create mode 100644 generate/protobuf/demo.proto create mode 100644 makefile diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..4496e39 --- /dev/null +++ b/.gitignore @@ -0,0 +1,6 @@ +.idea/ +go.sum +account/ +gen_result/ +etc/demo.yaml +./client \ No newline at end of file diff --git a/build/Dockerfile b/build/Dockerfile new file mode 100644 index 0000000..ba87d46 --- /dev/null +++ b/build/Dockerfile @@ -0,0 +1,47 @@ +########### +# BUILDER # +########### + +FROM golang:1.20 as builder + +ARG VERSION +ARG BUILT +ARG GIT_COMMIT + +RUN apt-get update && \ + apt-get install git + +WORKDIR /app + +COPY . . + +# Download public key for yt.com +RUN mkdir -p -m 0700 ~/.ssh && ssh-keyscan yt.com >> ~/.ssh/known_hosts + +# Forces the usage of git and ssh key fwded by ssh-agent for yt.com git repos +RUN git config --global url."git@yt.com:".insteadOf "https://yt.com" + +# private go packages +ENV GOPRIVATE=yt.com + +RUN --mount=type=ssh go mod download + +ENV FLAG="-s -w -X main.Version=${VERSION} -X main.Built=${BUILT} -X main.GitCommit=${GIT_COMMIT}" + +RUN CGO_ENABLED=1 GOOS=linux GOARCH=amd64 go build \ + -ldflags "$FLAG" \ + -o /permission-server ./cmd/permission + +######### +# FINAL # +######### + +FROM oraclelinux:9-slim AS final + +WORKDIR /app + +COPY --from=builder /permission-server /app/permission-server +COPY --from=builder /app/configs/config-example.yaml /app/config.yaml +COPY --from=builder /app/configs/rbac_model.conf /app/rbac_model.conf + +CMD ["/app/permission-server"] diff --git a/chart/readme.md b/chart/readme.md new file mode 100644 index 0000000..33c4f67 --- /dev/null +++ b/chart/readme.md @@ -0,0 +1 @@ +// TODO 未來要放 helm 的地方 \ No newline at end of file diff --git a/generate/database/mongodb/readme.md b/generate/database/mongodb/readme.md new file mode 100644 index 0000000..5cbb27e --- /dev/null +++ b/generate/database/mongodb/readme.md @@ -0,0 +1 @@ +如果有需要可以把 mongo 放這邊 \ No newline at end of file diff --git a/generate/database/mysql/20240816014305_create_permission_table.down.sql b/generate/database/mysql/20240816014305_create_permission_table.down.sql new file mode 100644 index 0000000..6dc8750 --- /dev/null +++ b/generate/database/mysql/20240816014305_create_permission_table.down.sql @@ -0,0 +1 @@ +DROP TABLE IF EXISTS `permission`; diff --git a/generate/database/mysql/20240816014305_create_permission_table.up.sql b/generate/database/mysql/20240816014305_create_permission_table.up.sql new file mode 100644 index 0000000..cbe4d31 --- /dev/null +++ b/generate/database/mysql/20240816014305_create_permission_table.up.sql @@ -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 ='權限表'; \ No newline at end of file diff --git a/generate/database/mysql/create/20230529020000_create_schema.down.sql b/generate/database/mysql/create/20230529020000_create_schema.down.sql new file mode 100644 index 0000000..766ea05 --- /dev/null +++ b/generate/database/mysql/create/20230529020000_create_schema.down.sql @@ -0,0 +1 @@ +DROP DATABASE IF EXISTS `example`; \ No newline at end of file diff --git a/generate/database/mysql/create/20230529020000_create_schema.up.sql b/generate/database/mysql/create/20230529020000_create_schema.up.sql new file mode 100644 index 0000000..07648b3 --- /dev/null +++ b/generate/database/mysql/create/20230529020000_create_schema.up.sql @@ -0,0 +1 @@ +CREATE DATABASE IF NOT EXISTS `example`; \ No newline at end of file diff --git a/generate/database/readme.md b/generate/database/readme.md new file mode 100644 index 0000000..58e2e2e --- /dev/null +++ b/generate/database/readme.md @@ -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 +``` + diff --git a/generate/database/seeder/20230620025708_init_role.down.sql b/generate/database/seeder/20230620025708_init_role.down.sql new file mode 100644 index 0000000..36a1962 --- /dev/null +++ b/generate/database/seeder/20230620025708_init_role.down.sql @@ -0,0 +1 @@ +DELETE FROM `role` WHERE (`role_id` = 'AM000000'); diff --git a/generate/database/seeder/20230620025708_init_role.up.sql b/generate/database/seeder/20230620025708_init_role.up.sql new file mode 100644 index 0000000..d4c158e --- /dev/null +++ b/generate/database/seeder/20230620025708_init_role.up.sql @@ -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()); \ No newline at end of file diff --git a/generate/protobuf/demo.proto b/generate/protobuf/demo.proto new file mode 100644 index 0000000..7e74ea6 --- /dev/null +++ b/generate/protobuf/demo.proto @@ -0,0 +1,21 @@ +syntax = "proto3"; + +package deom; + +option go_package="./demo"; + +// OKResp +message OKResp {} +// NoneReq +message NoneReq {} + + +// DemoService ... +service DemoService { + // Ping ... + rpc Ping(OKResp)returns(NoneReq); + +} + + + diff --git a/makefile b/makefile new file mode 100644 index 0000000..e69de29