From 9c1aa6da3d97cda854b571338812927d00d61b9f Mon Sep 17 00:00:00 2001 From: Kevin Wan Date: Sat, 18 Nov 2023 22:41:26 +0800 Subject: [PATCH] chore: refact dart code generation (#3726) --- tools/goctl/api/dartgen/genapi.go | 6 ++-- tools/goctl/api/dartgen/gendata.go | 4 +-- tools/goctl/api/dartgen/vars.go | 50 ++++++++++++++++-------------- 3 files changed, 32 insertions(+), 28 deletions(-) diff --git a/tools/goctl/api/dartgen/genapi.go b/tools/goctl/api/dartgen/genapi.go index f1ffe186..44f09bf1 100644 --- a/tools/goctl/api/dartgen/genapi.go +++ b/tools/goctl/api/dartgen/genapi.go @@ -15,8 +15,8 @@ import '../data/{{with .Info}}{{getBaseName .Title}}{{end}}.dart'; {{range .Routes}} /// --{{.Path}}-- /// -/// 请求: {{with .RequestType}}{{.Name}}{{end}} -/// 返回: {{with .ResponseType}}{{.Name}}{{end}} +/// request: {{with .RequestType}}{{.Name}}{{end}} +/// response: {{with .ResponseType}}{{.Name}}{{end}} Future {{pathToFuncName .Path}}( {{if ne .Method "get"}}{{with .RequestType}}{{.Name}} request,{{end}}{{end}} {Function({{with .ResponseType}}{{.Name}}{{end}}) ok, Function(String) fail, @@ -35,7 +35,7 @@ import '../data/{{with .Service}}{{.Name}}{{end}}.dart'; /// {{.Name}} {{range $i, $Route := .Routes}} /// --{{.Path}}-- -/// --{{.AtDoc}}-- +/// /// request: {{with .RequestType}}{{.Name}}{{end}} /// response: {{with .ResponseType}}{{.Name}}{{end}} Future {{normalizeHandlerName .Handler}}( diff --git a/tools/goctl/api/dartgen/gendata.go b/tools/goctl/api/dartgen/gendata.go index b8821765..7f21b42a 100644 --- a/tools/goctl/api/dartgen/gendata.go +++ b/tools/goctl/api/dartgen/gendata.go @@ -52,7 +52,7 @@ class {{.Name}} { {{else if isClassListType .Type.Name}} ((m['{{getPropertyFromMember .}}'] {{appendDefaultEmptyValue .Type.Name}}) as List).map((i) => {{getCoreType .Type.Name}}.fromJson(i)).toList() {{else if isMapType .Type.Name}} - {{if isNumberType .Type.Name}}num{{else}}{{.Type.Name}}{{end}}.from(m['{{getPropertyFromMember .}}'] ?? {}) + {{if isNumberType .Type.Name}}num{{else}}{{.Type.Name}}{{end}}.from(m['{{getPropertyFromMember .}}'] ?? {}) {{else}} {{.Type.Name}}.fromJson(m['{{getPropertyFromMember .}}']){{end}} ,{{end}} @@ -64,7 +64,7 @@ class {{.Name}} { {{if isDirectType .Type.Name}} {{lowCamelCase .Name}} {{else if isMapType .Type.Name}} - {{lowCamelCase .Name}} + {{lowCamelCase .Name}} {{else if isClassListType .Type.Name}} {{lowCamelCase .Name}}{{if isNullableType .Type.Name}}?{{end}}.map((i) => i{{if isListItemsNullable .Type.Name}}?{{end}}.toJson()) {{else}} diff --git a/tools/goctl/api/dartgen/vars.go b/tools/goctl/api/dartgen/vars.go index 295551b9..c34d364a 100644 --- a/tools/goctl/api/dartgen/vars.go +++ b/tools/goctl/api/dartgen/vars.go @@ -3,24 +3,24 @@ package dartgen import "text/template" var funcMap = template.FuncMap{ + "appendNullCoalescing": appendNullCoalescing, + "appendDefaultEmptyValue": appendDefaultEmptyValue, + "extractPositionalParamsFromPath": extractPositionalParamsFromPath, "getBaseName": getBaseName, + "getCoreType": getCoreType, "getPropertyFromMember": getPropertyFromMember, - "isDirectType": isDirectType, + "hasUrlPathParams": hasUrlPathParams, + "isAtomicListType": isAtomicListType, "isAtomicType": isAtomicType, - "isNumberType": isNumberType, + "isDirectType": isDirectType, "isClassListType": isClassListType, - "isAtomicListType": isAtomicListType, "isListItemsNullable": isListItemsNullable, + "isMapType": isMapType, "isNullableType": isNullableType, - "appendNullCoalescing": appendNullCoalescing, - "appendDefaultEmptyValue": appendDefaultEmptyValue, - "getCoreType": getCoreType, + "isNumberType": isNumberType, "lowCamelCase": lowCamelCase, - "normalizeHandlerName": normalizeHandlerName, - "hasUrlPathParams": hasUrlPathParams, - "extractPositionalParamsFromPath": extractPositionalParamsFromPath, "makeDartRequestUrlPath": makeDartRequestUrlPath, - "isMapType": isMapType, + "normalizeHandlerName": normalizeHandlerName, } const ( @@ -29,28 +29,32 @@ import 'dart:convert'; import '../vars/kv.dart'; import '../vars/vars.dart'; -/// 发送POST请求. +/// Send GET request. /// -/// data:为你要post的结构体,我们会帮你转换成json字符串; -/// ok函数:请求成功的时候调用,fail函数:请求失败的时候会调用,eventually函数:无论成功失败都会调用 -Future apiPost(String path, dynamic data, +/// ok: the function that will be called on success. +/// fail:the fuction that will be called on failure. +/// eventually:the function that will be called regardless of success or failure. +Future apiGet(String path, {Map header, Function(Map) ok, Function(String) fail, Function eventually}) async { - await _apiRequest('POST', path, data, + await _apiRequest('GET', path, null, header: header, ok: ok, fail: fail, eventually: eventually); } -/// 发送GET请求. +/// Send POST request. /// -/// ok函数:请求成功的时候调用,fail函数:请求失败的时候会调用,eventually函数:无论成功失败都会调用 -Future apiGet(String path, +/// data: the data to post, it will be marshaled to json automatically. +/// ok: the function that will be called on success. +/// fail:the fuction that will be called on failure. +/// eventually:the function that will be called regardless of success or failure. +Future apiPost(String path, dynamic data, {Map header, Function(Map) ok, Function(String) fail, Function eventually}) async { - await _apiRequest('GET', path, null, + await _apiRequest('POST', path, data, header: header, ok: ok, fail: fail, eventually: eventually); } @@ -213,11 +217,11 @@ Future _apiRequest(String method, String path, dynamic data, }` tokensFileContent = `class Tokens { - /// 用于访问的token, 每次请求都必须带在Header里面 + /// the token used to access, it must be carried in the header of each request final String accessToken; final int accessExpire; - /// 用于刷新token + /// the token used to refresh final String refreshToken; final int refreshExpire; final int refreshAfter; @@ -248,11 +252,11 @@ Future _apiRequest(String method, String path, dynamic data, ` tokensFileContentV2 = `class Tokens { - /// 用于访问的token, 每次请求都必须带在Header里面 + /// the token used to access, it must be carried in the header of each request final String accessToken; final int accessExpire; - /// 用于刷新token + /// the token used to refresh final String refreshToken; final int refreshExpire; final int refreshAfter;