Skip to content

ftkit new

Thêm một thành phần mới vào service Fountain hiện có.

Cách dùng

bash
ftkit new

Lệnh cũng có alias là n. Lệnh không nhận tham số — chạy lệnh sẽ mở một lời nhắc tương tác dẫn bạn chọn một hoặc nhiều thành phần để sinh ra (dùng promptui).

Lệnh làm gì

new trước tiên đọc dữ liệu môi trường của module hiện tại (chạy go list -m ở thư mục gốc dự án), rồi hiển thị một menu chọn nhiều mục với tiêu đề "Lựa chọn thành phần muốn thêm vào service". Tùy theo lựa chọn của bạn, lệnh sinh ra các file tương ứng và gắn chúng vào service hiện có — cập nhật server/server.go, biz/biz.go, và biz/dal/dao/managers.go khi cần (mỗi file bị chỉnh sửa đều được sao lưu trước).

Hãy chạy new từ thư mục gốc của một service đã được tạo bằng ftkit init.

Các thành phần có thể sinh ra

Menu tương tác cung cấp các loại thành phần sau (xem cmd/new.go / cmd/new_func.go):

Thành phầnSinh ra gì
controllerMột domain controller mới tại biz/core/<name>/, được đăng ký qua blank import trong biz/biz.go.
handlerMột package handler tại server/<name>/, với field handler và hàm khởi tạo được gắn vào Initialize() của struct server.
daoMột DAO/cache tại biz/dal/dao/<storage>_dao/, đăng ký trong managers.go và cài đặt trong server.go. Có thể sinh kèm model tương ứng.
pkgKhung một package tái sử dụng tại pkg/<name>/.
clientMột package client library (<service>_client/) để gọi service.
serverMột server theo giao thức, gắn vào struct server, đấu nối vào Initialize(), Serving()Destroy().

Giao thức server

Khi chọn server, bạn chọn một trong các giao thức được hỗ trợ:

  • grpc
  • http
  • tcp
  • udp

Backend lưu trữ cho DAO

Khi chọn dao, bạn chọn một backend lưu trữ. Các backend được hỗ trợ (theo createNewComponentDAO) gồm:

Lưu trữArtifact được sinh
redisMột *Cache trong redis_dao/, cài đặt qua InstallRedisDAOManager.
mysqlMột *DAO trong mysql_dao/, cài đặt qua InstallSQLDAOManager.
postgres / postgresqlMột *DAO trong postgres_dao/, cài đặt qua InstallSQLDAOManager.
mongo / mongodbMột *DAO trong mongo_dao/, cài đặt qua InstallMongoDAOManager.
cql / scylla / cassandraMột *STO trong cassandra_dao/, cài đặt qua InstallCQLDAOManager.
elasticMột *STO trong elastic_dao/, cài đặt qua InstallElasticDAOManager.

Với một DAO, bạn còn được hỏi có sinh DAO từ model hay không — nếu chọn yes, một file model sẽ được tạo (hoặc tái dùng file đã có) trong biz/dal/models/, và các tag db:"..." của nó được dùng để điền vào DAO SQL được sinh ra.

TIP

new hoàn toàn tương tác — không có cờ dòng lệnh. Mọi lựa chọn (loại thành phần, lưu trữ, tên) đều nhập qua các lời nhắc.

Giới hạn đã biết

File note.txt trong repo ftkit ghi lại một số cải tiến đã lên kế hoạch nhưng chưa hiện thực cho new — ví dụ luồng new mvc sinh models → handler → controller → dao trong một lần, tùy chọn tạo tất cả DAO còn thiếu cho /models, và sửa import-path cho handler nhiều từ. Những tính năng này chưa có và cố ý không được mô tả ở đây như tính năng đang hoạt động.