2021-01-17 21:46:25 +08:00
|
|
|
// Copyright GoFrame Author(https://goframe.org). All Rights Reserved.
|
2017-12-29 16:03:30 +08:00
|
|
|
//
|
|
|
|
|
// This Source Code Form is subject to the terms of the MIT License.
|
|
|
|
|
// If a copy of the MIT was not distributed with this file,
|
2019-02-02 16:18:25 +08:00
|
|
|
// You can obtain one at https://github.com/gogf/gf.
|
2017-12-31 18:19:58 +08:00
|
|
|
|
2017-12-11 17:16:59 +08:00
|
|
|
package ghttp
|
|
|
|
|
|
|
|
|
|
import (
|
2021-09-27 21:27:24 +08:00
|
|
|
"context"
|
2019-06-19 09:06:52 +08:00
|
|
|
"strings"
|
2017-12-11 17:16:59 +08:00
|
|
|
)
|
|
|
|
|
|
2020-05-07 23:05:33 +08:00
|
|
|
// Domain is used for route register for domains.
|
2017-12-11 17:16:59 +08:00
|
|
|
type Domain struct {
|
2020-05-07 23:05:33 +08:00
|
|
|
server *Server // Belonged server
|
|
|
|
|
domains map[string]struct{} // Support multiple domains.
|
2017-12-11 17:16:59 +08:00
|
|
|
}
|
|
|
|
|
|
2020-05-07 23:05:33 +08:00
|
|
|
// Domain creates and returns a domain object for management for one or more domains.
|
2018-08-01 21:08:46 +08:00
|
|
|
func (s *Server) Domain(domains string) *Domain {
|
2019-06-19 09:06:52 +08:00
|
|
|
d := &Domain{
|
2020-03-17 14:48:52 +08:00
|
|
|
server: s,
|
|
|
|
|
domains: make(map[string]struct{}),
|
2019-06-19 09:06:52 +08:00
|
|
|
}
|
|
|
|
|
for _, v := range strings.Split(domains, ",") {
|
2020-03-17 14:48:52 +08:00
|
|
|
d.domains[strings.TrimSpace(v)] = struct{}{}
|
2019-06-19 09:06:52 +08:00
|
|
|
}
|
|
|
|
|
return d
|
2017-12-11 17:16:59 +08:00
|
|
|
}
|
|
|
|
|
|
2022-03-19 17:58:21 +08:00
|
|
|
// BindHandler binds the handler for the specified pattern.
|
refactor: interface{} to any and reflect.Ptr to reflect.Pointer (#4395)
This pull request standardizes the use of the Go 1.18+ `any` type alias
instead of `interface{}` throughout the codebase. The change improves
code readability and aligns with modern Go best practices. The update
touches many files, including core data structures, code generation
templates, logging utilities, and test data, ensuring consistency across
all usages.
**Type alias migration to `any`:**
* Replaced all instances of `interface{}` with `any` in core data
structures such as `garray` and in generated model structs (e.g.,
`TableUser`, `User1`, `User2`) to modernize type usage.
[[1]](diffhunk://#diff-3a1259e160a4dfa5fe49dfe739fbdb986c0d0a2220a709882ea48d3ae1b8f911L31-R31)
[[2]](diffhunk://#diff-6c19859cb32c7516ea95ddc8f8235460818eb2f24d2204308e0d9e1b19e7d90fL15-R19)
[[3]](diffhunk://#diff-a15ba2f5e830b4833c47b902515a4f9e5a4f83a3707698f3229b307ec3776b41L15-R18)
[[4]](diffhunk://#diff-52e0837e84d49221d1b810d88fdf78221f36cffcd664fb42f8aba49a79b974dcL15-R19)
[[5]](diffhunk://#diff-11c3457d1a23a4ca6ecd00d6b856289774936b6a708384cf03aff164044e7546L15-R19)
[[6]](diffhunk://#diff-2cff9cf8e6a0cc34087326d8c8149c3bbaf74c76fdbdf5a73daed13cc04249e1L15-R19)
* Updated function signatures, method parameters, and return types from
`interface{}` to `any` in various parts of the codebase, including code
generation, service logic, and logging utilities (e.g., `mlog`).
[[1]](diffhunk://#diff-175edfeea54490b8fe4e18ffcbea5835efaf8f0b8acf623359073987cae7eb76L48-R55)
[[2]](diffhunk://#diff-2b1953fb78cf3593d8c2c7d911e95b65fd0b847c30ed0b4d167d16fe6d781235L54-R74)
[[3]](diffhunk://#diff-e001b7a4b63603b9b14f00de78a4d570bb76c5f57d856a24643f071032e12356L66-R73)
[[4]](diffhunk://#diff-5582954e8a9983988dc8854ad82067fb2ac6269b988e07357ad8db1dfec5f1a0L39-R41)
[[5]](diffhunk://#diff-c5d51d56f487779a2b6207c7ad26c7a20bbadcc846ce094fe60ab4cabff58c51L107-R107)
[[6]](diffhunk://#diff-f96e6a9fdb416eb1804ceaba1fe0ac637bff22c43837f8bb849c2366ce72d4a1L116-R121)
[[7]](diffhunk://#diff-f94c83a1b08ae060d9346f4a6031fc4a7b9a0b894e02d9afaa09018b6598eac0L112-R112)
[[8]](diffhunk://#diff-748b11dbe8828dd4c040ec23cae0b8fe57ecf0a2d1b7694ea39102294e633c64L36-R36)
[[9]](diffhunk://#diff-748b11dbe8828dd4c040ec23cae0b8fe57ecf0a2d1b7694ea39102294e633c64L74-R74)
[[10]](diffhunk://#diff-748b11dbe8828dd4c040ec23cae0b8fe57ecf0a2d1b7694ea39102294e633c64L96-R96)
**Generated code and templates:**
* Adjusted generated files and code generation templates to output `any`
instead of `interface{}` for relevant struct fields and function
signatures, ensuring that new code generation aligns with the updated
convention.
[[1]](diffhunk://#diff-6c19859cb32c7516ea95ddc8f8235460818eb2f24d2204308e0d9e1b19e7d90fL15-R19)
[[2]](diffhunk://#diff-a15ba2f5e830b4833c47b902515a4f9e5a4f83a3707698f3229b307ec3776b41L15-R18)
[[3]](diffhunk://#diff-52e0837e84d49221d1b810d88fdf78221f36cffcd664fb42f8aba49a79b974dcL15-R19)
[[4]](diffhunk://#diff-11c3457d1a23a4ca6ecd00d6b856289774936b6a708384cf03aff164044e7546L15-R19)
[[5]](diffhunk://#diff-2cff9cf8e6a0cc34087326d8c8149c3bbaf74c76fdbdf5a73daed13cc04249e1L15-R19)
[[6]](diffhunk://#diff-175edfeea54490b8fe4e18ffcbea5835efaf8f0b8acf623359073987cae7eb76L48-R55)
[[7]](diffhunk://#diff-e001b7a4b63603b9b14f00de78a4d570bb76c5f57d856a24643f071032e12356L66-R73)
[[8]](diffhunk://#diff-5582954e8a9983988dc8854ad82067fb2ac6269b988e07357ad8db1dfec5f1a0L39-R41)
**Container and utility updates:**
* Refactored the `garray` container implementation and related
constructors/methods to use `[]any` instead of `[]interface{}`, along
with corresponding function signatures.
[[1]](diffhunk://#diff-3a1259e160a4dfa5fe49dfe739fbdb986c0d0a2220a709882ea48d3ae1b8f911L31-R31)
[[2]](diffhunk://#diff-3a1259e160a4dfa5fe49dfe739fbdb986c0d0a2220a709882ea48d3ae1b8f911L52-R52)
[[3]](diffhunk://#diff-3a1259e160a4dfa5fe49dfe739fbdb986c0d0a2220a709882ea48d3ae1b8f911L62-R62)
[[4]](diffhunk://#diff-3a1259e160a4dfa5fe49dfe739fbdb986c0d0a2220a709882ea48d3ae1b8f911L73-R86)
[[5]](diffhunk://#diff-3a1259e160a4dfa5fe49dfe739fbdb986c0d0a2220a709882ea48d3ae1b8f911L96-R97)
[[6]](diffhunk://#diff-3a1259e160a4dfa5fe49dfe739fbdb986c0d0a2220a709882ea48d3ae1b8f911L107-R114)
[[7]](diffhunk://#diff-3a1259e160a4dfa5fe49dfe739fbdb986c0d0a2220a709882ea48d3ae1b8f911L124-R124)
[[8]](diffhunk://#diff-3a1259e160a4dfa5fe49dfe739fbdb986c0d0a2220a709882ea48d3ae1b8f911L135-R143)
[[9]](diffhunk://#diff-3a1259e160a4dfa5fe49dfe739fbdb986c0d0a2220a709882ea48d3ae1b8f911L167-R167)
These changes collectively modernize the codebase and prepare it for
future Go developments by using the idiomatic `any` type.
2025-08-28 16:53:19 +08:00
|
|
|
func (d *Domain) BindHandler(pattern string, handler any) {
|
2022-03-19 17:58:21 +08:00
|
|
|
for domain := range d.domains {
|
2025-09-26 18:49:36 +08:00
|
|
|
d.server.BindHandler(patternBindDomain(pattern, domain), handler)
|
2019-06-19 09:06:52 +08:00
|
|
|
}
|
2017-12-30 18:35:24 +08:00
|
|
|
}
|
|
|
|
|
|
2021-11-07 21:31:33 +08:00
|
|
|
func (d *Domain) doBindHandler(ctx context.Context, in doBindHandlerInput) {
|
2022-03-19 17:58:21 +08:00
|
|
|
for domain := range d.domains {
|
2021-11-07 21:31:33 +08:00
|
|
|
d.server.doBindHandler(ctx, doBindHandlerInput{
|
|
|
|
|
Prefix: in.Prefix,
|
2025-09-26 18:49:36 +08:00
|
|
|
Pattern: patternBindDomain(in.Pattern, domain),
|
2021-11-07 21:31:33 +08:00
|
|
|
FuncInfo: in.FuncInfo,
|
|
|
|
|
Middleware: in.Middleware,
|
|
|
|
|
Source: in.Source,
|
|
|
|
|
})
|
2019-12-04 10:03:03 +08:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2022-03-19 17:58:21 +08:00
|
|
|
// BindObject binds the object for the specified pattern.
|
refactor: interface{} to any and reflect.Ptr to reflect.Pointer (#4395)
This pull request standardizes the use of the Go 1.18+ `any` type alias
instead of `interface{}` throughout the codebase. The change improves
code readability and aligns with modern Go best practices. The update
touches many files, including core data structures, code generation
templates, logging utilities, and test data, ensuring consistency across
all usages.
**Type alias migration to `any`:**
* Replaced all instances of `interface{}` with `any` in core data
structures such as `garray` and in generated model structs (e.g.,
`TableUser`, `User1`, `User2`) to modernize type usage.
[[1]](diffhunk://#diff-3a1259e160a4dfa5fe49dfe739fbdb986c0d0a2220a709882ea48d3ae1b8f911L31-R31)
[[2]](diffhunk://#diff-6c19859cb32c7516ea95ddc8f8235460818eb2f24d2204308e0d9e1b19e7d90fL15-R19)
[[3]](diffhunk://#diff-a15ba2f5e830b4833c47b902515a4f9e5a4f83a3707698f3229b307ec3776b41L15-R18)
[[4]](diffhunk://#diff-52e0837e84d49221d1b810d88fdf78221f36cffcd664fb42f8aba49a79b974dcL15-R19)
[[5]](diffhunk://#diff-11c3457d1a23a4ca6ecd00d6b856289774936b6a708384cf03aff164044e7546L15-R19)
[[6]](diffhunk://#diff-2cff9cf8e6a0cc34087326d8c8149c3bbaf74c76fdbdf5a73daed13cc04249e1L15-R19)
* Updated function signatures, method parameters, and return types from
`interface{}` to `any` in various parts of the codebase, including code
generation, service logic, and logging utilities (e.g., `mlog`).
[[1]](diffhunk://#diff-175edfeea54490b8fe4e18ffcbea5835efaf8f0b8acf623359073987cae7eb76L48-R55)
[[2]](diffhunk://#diff-2b1953fb78cf3593d8c2c7d911e95b65fd0b847c30ed0b4d167d16fe6d781235L54-R74)
[[3]](diffhunk://#diff-e001b7a4b63603b9b14f00de78a4d570bb76c5f57d856a24643f071032e12356L66-R73)
[[4]](diffhunk://#diff-5582954e8a9983988dc8854ad82067fb2ac6269b988e07357ad8db1dfec5f1a0L39-R41)
[[5]](diffhunk://#diff-c5d51d56f487779a2b6207c7ad26c7a20bbadcc846ce094fe60ab4cabff58c51L107-R107)
[[6]](diffhunk://#diff-f96e6a9fdb416eb1804ceaba1fe0ac637bff22c43837f8bb849c2366ce72d4a1L116-R121)
[[7]](diffhunk://#diff-f94c83a1b08ae060d9346f4a6031fc4a7b9a0b894e02d9afaa09018b6598eac0L112-R112)
[[8]](diffhunk://#diff-748b11dbe8828dd4c040ec23cae0b8fe57ecf0a2d1b7694ea39102294e633c64L36-R36)
[[9]](diffhunk://#diff-748b11dbe8828dd4c040ec23cae0b8fe57ecf0a2d1b7694ea39102294e633c64L74-R74)
[[10]](diffhunk://#diff-748b11dbe8828dd4c040ec23cae0b8fe57ecf0a2d1b7694ea39102294e633c64L96-R96)
**Generated code and templates:**
* Adjusted generated files and code generation templates to output `any`
instead of `interface{}` for relevant struct fields and function
signatures, ensuring that new code generation aligns with the updated
convention.
[[1]](diffhunk://#diff-6c19859cb32c7516ea95ddc8f8235460818eb2f24d2204308e0d9e1b19e7d90fL15-R19)
[[2]](diffhunk://#diff-a15ba2f5e830b4833c47b902515a4f9e5a4f83a3707698f3229b307ec3776b41L15-R18)
[[3]](diffhunk://#diff-52e0837e84d49221d1b810d88fdf78221f36cffcd664fb42f8aba49a79b974dcL15-R19)
[[4]](diffhunk://#diff-11c3457d1a23a4ca6ecd00d6b856289774936b6a708384cf03aff164044e7546L15-R19)
[[5]](diffhunk://#diff-2cff9cf8e6a0cc34087326d8c8149c3bbaf74c76fdbdf5a73daed13cc04249e1L15-R19)
[[6]](diffhunk://#diff-175edfeea54490b8fe4e18ffcbea5835efaf8f0b8acf623359073987cae7eb76L48-R55)
[[7]](diffhunk://#diff-e001b7a4b63603b9b14f00de78a4d570bb76c5f57d856a24643f071032e12356L66-R73)
[[8]](diffhunk://#diff-5582954e8a9983988dc8854ad82067fb2ac6269b988e07357ad8db1dfec5f1a0L39-R41)
**Container and utility updates:**
* Refactored the `garray` container implementation and related
constructors/methods to use `[]any` instead of `[]interface{}`, along
with corresponding function signatures.
[[1]](diffhunk://#diff-3a1259e160a4dfa5fe49dfe739fbdb986c0d0a2220a709882ea48d3ae1b8f911L31-R31)
[[2]](diffhunk://#diff-3a1259e160a4dfa5fe49dfe739fbdb986c0d0a2220a709882ea48d3ae1b8f911L52-R52)
[[3]](diffhunk://#diff-3a1259e160a4dfa5fe49dfe739fbdb986c0d0a2220a709882ea48d3ae1b8f911L62-R62)
[[4]](diffhunk://#diff-3a1259e160a4dfa5fe49dfe739fbdb986c0d0a2220a709882ea48d3ae1b8f911L73-R86)
[[5]](diffhunk://#diff-3a1259e160a4dfa5fe49dfe739fbdb986c0d0a2220a709882ea48d3ae1b8f911L96-R97)
[[6]](diffhunk://#diff-3a1259e160a4dfa5fe49dfe739fbdb986c0d0a2220a709882ea48d3ae1b8f911L107-R114)
[[7]](diffhunk://#diff-3a1259e160a4dfa5fe49dfe739fbdb986c0d0a2220a709882ea48d3ae1b8f911L124-R124)
[[8]](diffhunk://#diff-3a1259e160a4dfa5fe49dfe739fbdb986c0d0a2220a709882ea48d3ae1b8f911L135-R143)
[[9]](diffhunk://#diff-3a1259e160a4dfa5fe49dfe739fbdb986c0d0a2220a709882ea48d3ae1b8f911L167-R167)
These changes collectively modernize the codebase and prepare it for
future Go developments by using the idiomatic `any` type.
2025-08-28 16:53:19 +08:00
|
|
|
func (d *Domain) BindObject(pattern string, obj any, methods ...string) {
|
2022-03-19 17:58:21 +08:00
|
|
|
for domain := range d.domains {
|
2025-09-26 18:49:36 +08:00
|
|
|
d.server.BindObject(patternBindDomain(pattern, domain), obj, methods...)
|
2019-06-19 09:06:52 +08:00
|
|
|
}
|
2017-12-30 18:35:24 +08:00
|
|
|
}
|
|
|
|
|
|
2021-11-07 21:31:33 +08:00
|
|
|
func (d *Domain) doBindObject(ctx context.Context, in doBindObjectInput) {
|
2022-03-19 17:58:21 +08:00
|
|
|
for domain := range d.domains {
|
2021-11-07 21:31:33 +08:00
|
|
|
d.server.doBindObject(ctx, doBindObjectInput{
|
|
|
|
|
Prefix: in.Prefix,
|
2025-09-26 18:49:36 +08:00
|
|
|
Pattern: patternBindDomain(in.Pattern, domain),
|
2021-11-07 21:31:33 +08:00
|
|
|
Object: in.Object,
|
|
|
|
|
Method: in.Method,
|
|
|
|
|
Middleware: in.Middleware,
|
|
|
|
|
Source: in.Source,
|
|
|
|
|
})
|
2019-12-04 10:03:03 +08:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2022-03-19 17:58:21 +08:00
|
|
|
// BindObjectMethod binds the method for the specified pattern.
|
refactor: interface{} to any and reflect.Ptr to reflect.Pointer (#4395)
This pull request standardizes the use of the Go 1.18+ `any` type alias
instead of `interface{}` throughout the codebase. The change improves
code readability and aligns with modern Go best practices. The update
touches many files, including core data structures, code generation
templates, logging utilities, and test data, ensuring consistency across
all usages.
**Type alias migration to `any`:**
* Replaced all instances of `interface{}` with `any` in core data
structures such as `garray` and in generated model structs (e.g.,
`TableUser`, `User1`, `User2`) to modernize type usage.
[[1]](diffhunk://#diff-3a1259e160a4dfa5fe49dfe739fbdb986c0d0a2220a709882ea48d3ae1b8f911L31-R31)
[[2]](diffhunk://#diff-6c19859cb32c7516ea95ddc8f8235460818eb2f24d2204308e0d9e1b19e7d90fL15-R19)
[[3]](diffhunk://#diff-a15ba2f5e830b4833c47b902515a4f9e5a4f83a3707698f3229b307ec3776b41L15-R18)
[[4]](diffhunk://#diff-52e0837e84d49221d1b810d88fdf78221f36cffcd664fb42f8aba49a79b974dcL15-R19)
[[5]](diffhunk://#diff-11c3457d1a23a4ca6ecd00d6b856289774936b6a708384cf03aff164044e7546L15-R19)
[[6]](diffhunk://#diff-2cff9cf8e6a0cc34087326d8c8149c3bbaf74c76fdbdf5a73daed13cc04249e1L15-R19)
* Updated function signatures, method parameters, and return types from
`interface{}` to `any` in various parts of the codebase, including code
generation, service logic, and logging utilities (e.g., `mlog`).
[[1]](diffhunk://#diff-175edfeea54490b8fe4e18ffcbea5835efaf8f0b8acf623359073987cae7eb76L48-R55)
[[2]](diffhunk://#diff-2b1953fb78cf3593d8c2c7d911e95b65fd0b847c30ed0b4d167d16fe6d781235L54-R74)
[[3]](diffhunk://#diff-e001b7a4b63603b9b14f00de78a4d570bb76c5f57d856a24643f071032e12356L66-R73)
[[4]](diffhunk://#diff-5582954e8a9983988dc8854ad82067fb2ac6269b988e07357ad8db1dfec5f1a0L39-R41)
[[5]](diffhunk://#diff-c5d51d56f487779a2b6207c7ad26c7a20bbadcc846ce094fe60ab4cabff58c51L107-R107)
[[6]](diffhunk://#diff-f96e6a9fdb416eb1804ceaba1fe0ac637bff22c43837f8bb849c2366ce72d4a1L116-R121)
[[7]](diffhunk://#diff-f94c83a1b08ae060d9346f4a6031fc4a7b9a0b894e02d9afaa09018b6598eac0L112-R112)
[[8]](diffhunk://#diff-748b11dbe8828dd4c040ec23cae0b8fe57ecf0a2d1b7694ea39102294e633c64L36-R36)
[[9]](diffhunk://#diff-748b11dbe8828dd4c040ec23cae0b8fe57ecf0a2d1b7694ea39102294e633c64L74-R74)
[[10]](diffhunk://#diff-748b11dbe8828dd4c040ec23cae0b8fe57ecf0a2d1b7694ea39102294e633c64L96-R96)
**Generated code and templates:**
* Adjusted generated files and code generation templates to output `any`
instead of `interface{}` for relevant struct fields and function
signatures, ensuring that new code generation aligns with the updated
convention.
[[1]](diffhunk://#diff-6c19859cb32c7516ea95ddc8f8235460818eb2f24d2204308e0d9e1b19e7d90fL15-R19)
[[2]](diffhunk://#diff-a15ba2f5e830b4833c47b902515a4f9e5a4f83a3707698f3229b307ec3776b41L15-R18)
[[3]](diffhunk://#diff-52e0837e84d49221d1b810d88fdf78221f36cffcd664fb42f8aba49a79b974dcL15-R19)
[[4]](diffhunk://#diff-11c3457d1a23a4ca6ecd00d6b856289774936b6a708384cf03aff164044e7546L15-R19)
[[5]](diffhunk://#diff-2cff9cf8e6a0cc34087326d8c8149c3bbaf74c76fdbdf5a73daed13cc04249e1L15-R19)
[[6]](diffhunk://#diff-175edfeea54490b8fe4e18ffcbea5835efaf8f0b8acf623359073987cae7eb76L48-R55)
[[7]](diffhunk://#diff-e001b7a4b63603b9b14f00de78a4d570bb76c5f57d856a24643f071032e12356L66-R73)
[[8]](diffhunk://#diff-5582954e8a9983988dc8854ad82067fb2ac6269b988e07357ad8db1dfec5f1a0L39-R41)
**Container and utility updates:**
* Refactored the `garray` container implementation and related
constructors/methods to use `[]any` instead of `[]interface{}`, along
with corresponding function signatures.
[[1]](diffhunk://#diff-3a1259e160a4dfa5fe49dfe739fbdb986c0d0a2220a709882ea48d3ae1b8f911L31-R31)
[[2]](diffhunk://#diff-3a1259e160a4dfa5fe49dfe739fbdb986c0d0a2220a709882ea48d3ae1b8f911L52-R52)
[[3]](diffhunk://#diff-3a1259e160a4dfa5fe49dfe739fbdb986c0d0a2220a709882ea48d3ae1b8f911L62-R62)
[[4]](diffhunk://#diff-3a1259e160a4dfa5fe49dfe739fbdb986c0d0a2220a709882ea48d3ae1b8f911L73-R86)
[[5]](diffhunk://#diff-3a1259e160a4dfa5fe49dfe739fbdb986c0d0a2220a709882ea48d3ae1b8f911L96-R97)
[[6]](diffhunk://#diff-3a1259e160a4dfa5fe49dfe739fbdb986c0d0a2220a709882ea48d3ae1b8f911L107-R114)
[[7]](diffhunk://#diff-3a1259e160a4dfa5fe49dfe739fbdb986c0d0a2220a709882ea48d3ae1b8f911L124-R124)
[[8]](diffhunk://#diff-3a1259e160a4dfa5fe49dfe739fbdb986c0d0a2220a709882ea48d3ae1b8f911L135-R143)
[[9]](diffhunk://#diff-3a1259e160a4dfa5fe49dfe739fbdb986c0d0a2220a709882ea48d3ae1b8f911L167-R167)
These changes collectively modernize the codebase and prepare it for
future Go developments by using the idiomatic `any` type.
2025-08-28 16:53:19 +08:00
|
|
|
func (d *Domain) BindObjectMethod(pattern string, obj any, method string) {
|
2022-03-19 17:58:21 +08:00
|
|
|
for domain := range d.domains {
|
2025-09-26 18:49:36 +08:00
|
|
|
d.server.BindObjectMethod(patternBindDomain(pattern, domain), obj, method)
|
2019-06-19 09:06:52 +08:00
|
|
|
}
|
2018-01-08 11:38:31 +08:00
|
|
|
}
|
|
|
|
|
|
2021-11-07 21:31:33 +08:00
|
|
|
func (d *Domain) doBindObjectMethod(ctx context.Context, in doBindObjectMethodInput) {
|
2022-03-19 17:58:21 +08:00
|
|
|
for domain := range d.domains {
|
2021-11-07 21:31:33 +08:00
|
|
|
d.server.doBindObjectMethod(ctx, doBindObjectMethodInput{
|
|
|
|
|
Prefix: in.Prefix,
|
2025-09-26 18:49:36 +08:00
|
|
|
Pattern: patternBindDomain(in.Pattern, domain),
|
2021-11-07 21:31:33 +08:00
|
|
|
Object: in.Object,
|
|
|
|
|
Method: in.Method,
|
|
|
|
|
Middleware: in.Middleware,
|
|
|
|
|
Source: in.Source,
|
|
|
|
|
})
|
2019-12-04 10:03:03 +08:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2022-03-19 17:58:21 +08:00
|
|
|
// BindObjectRest binds the RESTful API for the specified pattern.
|
refactor: interface{} to any and reflect.Ptr to reflect.Pointer (#4395)
This pull request standardizes the use of the Go 1.18+ `any` type alias
instead of `interface{}` throughout the codebase. The change improves
code readability and aligns with modern Go best practices. The update
touches many files, including core data structures, code generation
templates, logging utilities, and test data, ensuring consistency across
all usages.
**Type alias migration to `any`:**
* Replaced all instances of `interface{}` with `any` in core data
structures such as `garray` and in generated model structs (e.g.,
`TableUser`, `User1`, `User2`) to modernize type usage.
[[1]](diffhunk://#diff-3a1259e160a4dfa5fe49dfe739fbdb986c0d0a2220a709882ea48d3ae1b8f911L31-R31)
[[2]](diffhunk://#diff-6c19859cb32c7516ea95ddc8f8235460818eb2f24d2204308e0d9e1b19e7d90fL15-R19)
[[3]](diffhunk://#diff-a15ba2f5e830b4833c47b902515a4f9e5a4f83a3707698f3229b307ec3776b41L15-R18)
[[4]](diffhunk://#diff-52e0837e84d49221d1b810d88fdf78221f36cffcd664fb42f8aba49a79b974dcL15-R19)
[[5]](diffhunk://#diff-11c3457d1a23a4ca6ecd00d6b856289774936b6a708384cf03aff164044e7546L15-R19)
[[6]](diffhunk://#diff-2cff9cf8e6a0cc34087326d8c8149c3bbaf74c76fdbdf5a73daed13cc04249e1L15-R19)
* Updated function signatures, method parameters, and return types from
`interface{}` to `any` in various parts of the codebase, including code
generation, service logic, and logging utilities (e.g., `mlog`).
[[1]](diffhunk://#diff-175edfeea54490b8fe4e18ffcbea5835efaf8f0b8acf623359073987cae7eb76L48-R55)
[[2]](diffhunk://#diff-2b1953fb78cf3593d8c2c7d911e95b65fd0b847c30ed0b4d167d16fe6d781235L54-R74)
[[3]](diffhunk://#diff-e001b7a4b63603b9b14f00de78a4d570bb76c5f57d856a24643f071032e12356L66-R73)
[[4]](diffhunk://#diff-5582954e8a9983988dc8854ad82067fb2ac6269b988e07357ad8db1dfec5f1a0L39-R41)
[[5]](diffhunk://#diff-c5d51d56f487779a2b6207c7ad26c7a20bbadcc846ce094fe60ab4cabff58c51L107-R107)
[[6]](diffhunk://#diff-f96e6a9fdb416eb1804ceaba1fe0ac637bff22c43837f8bb849c2366ce72d4a1L116-R121)
[[7]](diffhunk://#diff-f94c83a1b08ae060d9346f4a6031fc4a7b9a0b894e02d9afaa09018b6598eac0L112-R112)
[[8]](diffhunk://#diff-748b11dbe8828dd4c040ec23cae0b8fe57ecf0a2d1b7694ea39102294e633c64L36-R36)
[[9]](diffhunk://#diff-748b11dbe8828dd4c040ec23cae0b8fe57ecf0a2d1b7694ea39102294e633c64L74-R74)
[[10]](diffhunk://#diff-748b11dbe8828dd4c040ec23cae0b8fe57ecf0a2d1b7694ea39102294e633c64L96-R96)
**Generated code and templates:**
* Adjusted generated files and code generation templates to output `any`
instead of `interface{}` for relevant struct fields and function
signatures, ensuring that new code generation aligns with the updated
convention.
[[1]](diffhunk://#diff-6c19859cb32c7516ea95ddc8f8235460818eb2f24d2204308e0d9e1b19e7d90fL15-R19)
[[2]](diffhunk://#diff-a15ba2f5e830b4833c47b902515a4f9e5a4f83a3707698f3229b307ec3776b41L15-R18)
[[3]](diffhunk://#diff-52e0837e84d49221d1b810d88fdf78221f36cffcd664fb42f8aba49a79b974dcL15-R19)
[[4]](diffhunk://#diff-11c3457d1a23a4ca6ecd00d6b856289774936b6a708384cf03aff164044e7546L15-R19)
[[5]](diffhunk://#diff-2cff9cf8e6a0cc34087326d8c8149c3bbaf74c76fdbdf5a73daed13cc04249e1L15-R19)
[[6]](diffhunk://#diff-175edfeea54490b8fe4e18ffcbea5835efaf8f0b8acf623359073987cae7eb76L48-R55)
[[7]](diffhunk://#diff-e001b7a4b63603b9b14f00de78a4d570bb76c5f57d856a24643f071032e12356L66-R73)
[[8]](diffhunk://#diff-5582954e8a9983988dc8854ad82067fb2ac6269b988e07357ad8db1dfec5f1a0L39-R41)
**Container and utility updates:**
* Refactored the `garray` container implementation and related
constructors/methods to use `[]any` instead of `[]interface{}`, along
with corresponding function signatures.
[[1]](diffhunk://#diff-3a1259e160a4dfa5fe49dfe739fbdb986c0d0a2220a709882ea48d3ae1b8f911L31-R31)
[[2]](diffhunk://#diff-3a1259e160a4dfa5fe49dfe739fbdb986c0d0a2220a709882ea48d3ae1b8f911L52-R52)
[[3]](diffhunk://#diff-3a1259e160a4dfa5fe49dfe739fbdb986c0d0a2220a709882ea48d3ae1b8f911L62-R62)
[[4]](diffhunk://#diff-3a1259e160a4dfa5fe49dfe739fbdb986c0d0a2220a709882ea48d3ae1b8f911L73-R86)
[[5]](diffhunk://#diff-3a1259e160a4dfa5fe49dfe739fbdb986c0d0a2220a709882ea48d3ae1b8f911L96-R97)
[[6]](diffhunk://#diff-3a1259e160a4dfa5fe49dfe739fbdb986c0d0a2220a709882ea48d3ae1b8f911L107-R114)
[[7]](diffhunk://#diff-3a1259e160a4dfa5fe49dfe739fbdb986c0d0a2220a709882ea48d3ae1b8f911L124-R124)
[[8]](diffhunk://#diff-3a1259e160a4dfa5fe49dfe739fbdb986c0d0a2220a709882ea48d3ae1b8f911L135-R143)
[[9]](diffhunk://#diff-3a1259e160a4dfa5fe49dfe739fbdb986c0d0a2220a709882ea48d3ae1b8f911L167-R167)
These changes collectively modernize the codebase and prepare it for
future Go developments by using the idiomatic `any` type.
2025-08-28 16:53:19 +08:00
|
|
|
func (d *Domain) BindObjectRest(pattern string, obj any) {
|
2022-03-19 17:58:21 +08:00
|
|
|
for domain := range d.domains {
|
2025-09-26 18:49:36 +08:00
|
|
|
d.server.BindObjectRest(patternBindDomain(pattern, domain), obj)
|
2019-06-19 09:06:52 +08:00
|
|
|
}
|
2017-12-11 17:16:59 +08:00
|
|
|
}
|
|
|
|
|
|
2021-11-07 21:31:33 +08:00
|
|
|
func (d *Domain) doBindObjectRest(ctx context.Context, in doBindObjectInput) {
|
2022-03-19 17:58:21 +08:00
|
|
|
for domain := range d.domains {
|
2021-11-07 21:31:33 +08:00
|
|
|
d.server.doBindObjectRest(ctx, doBindObjectInput{
|
|
|
|
|
Prefix: in.Prefix,
|
2025-09-26 18:49:36 +08:00
|
|
|
Pattern: patternBindDomain(in.Pattern, domain),
|
2021-11-07 21:31:33 +08:00
|
|
|
Object: in.Object,
|
|
|
|
|
Method: in.Method,
|
|
|
|
|
Middleware: in.Middleware,
|
|
|
|
|
Source: in.Source,
|
|
|
|
|
})
|
2019-12-04 10:03:03 +08:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2022-03-19 17:58:21 +08:00
|
|
|
// BindHookHandler binds the hook handler for the specified pattern.
|
2023-07-06 21:29:33 +08:00
|
|
|
func (d *Domain) BindHookHandler(pattern string, hook HookName, handler HandlerFunc) {
|
2022-03-19 17:58:21 +08:00
|
|
|
for domain := range d.domains {
|
2025-09-26 18:49:36 +08:00
|
|
|
d.server.BindHookHandler(patternBindDomain(pattern, domain), hook, handler)
|
2020-03-17 14:48:52 +08:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2021-11-07 21:31:33 +08:00
|
|
|
func (d *Domain) doBindHookHandler(ctx context.Context, in doBindHookHandlerInput) {
|
2022-03-19 17:58:21 +08:00
|
|
|
for domain := range d.domains {
|
2021-11-07 21:31:33 +08:00
|
|
|
d.server.doBindHookHandler(ctx, doBindHookHandlerInput{
|
|
|
|
|
Prefix: in.Prefix,
|
2025-09-26 18:49:36 +08:00
|
|
|
Pattern: patternBindDomain(in.Pattern, domain),
|
2021-11-07 21:31:33 +08:00
|
|
|
HookName: in.HookName,
|
|
|
|
|
Handler: in.Handler,
|
|
|
|
|
Source: in.Source,
|
|
|
|
|
})
|
2019-06-19 09:06:52 +08:00
|
|
|
}
|
2018-04-08 23:47:40 +08:00
|
|
|
}
|
|
|
|
|
|
2022-03-19 17:58:21 +08:00
|
|
|
// BindHookHandlerByMap binds the hook handler for the specified pattern.
|
2023-07-06 21:29:33 +08:00
|
|
|
func (d *Domain) BindHookHandlerByMap(pattern string, hookMap map[HookName]HandlerFunc) {
|
2022-03-19 17:58:21 +08:00
|
|
|
for domain := range d.domains {
|
2025-09-26 18:49:36 +08:00
|
|
|
d.server.BindHookHandlerByMap(patternBindDomain(pattern, domain), hookMap)
|
2019-06-19 09:06:52 +08:00
|
|
|
}
|
2018-04-09 17:55:46 +08:00
|
|
|
}
|
2018-05-04 14:35:20 +08:00
|
|
|
|
2022-03-19 17:58:21 +08:00
|
|
|
// BindStatusHandler binds the status handler for the specified pattern.
|
2019-06-19 09:06:52 +08:00
|
|
|
func (d *Domain) BindStatusHandler(status int, handler HandlerFunc) {
|
2022-03-19 17:58:21 +08:00
|
|
|
for domain := range d.domains {
|
2020-11-25 16:37:41 +08:00
|
|
|
d.server.addStatusHandler(d.server.statusHandlerKey(status, domain), handler)
|
2019-06-19 09:06:52 +08:00
|
|
|
}
|
2018-05-04 14:35:20 +08:00
|
|
|
}
|
|
|
|
|
|
2022-03-19 17:58:21 +08:00
|
|
|
// BindStatusHandlerByMap binds the status handler for the specified pattern.
|
2019-06-19 09:06:52 +08:00
|
|
|
func (d *Domain) BindStatusHandlerByMap(handlerMap map[int]HandlerFunc) {
|
|
|
|
|
for k, v := range handlerMap {
|
|
|
|
|
d.BindStatusHandler(k, v)
|
|
|
|
|
}
|
|
|
|
|
}
|
2019-08-06 20:40:04 +08:00
|
|
|
|
2022-03-19 17:58:21 +08:00
|
|
|
// BindMiddleware binds the middleware for the specified pattern.
|
2019-08-06 20:40:04 +08:00
|
|
|
func (d *Domain) BindMiddleware(pattern string, handlers ...HandlerFunc) {
|
2022-03-19 17:58:21 +08:00
|
|
|
for domain := range d.domains {
|
2025-09-26 18:49:36 +08:00
|
|
|
d.server.BindMiddleware(patternBindDomain(pattern, domain), handlers...)
|
2019-08-06 20:40:04 +08:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2022-03-19 17:58:21 +08:00
|
|
|
// BindMiddlewareDefault binds the default middleware for the specified pattern.
|
2019-12-02 23:05:05 +08:00
|
|
|
func (d *Domain) BindMiddlewareDefault(handlers ...HandlerFunc) {
|
2022-03-19 17:58:21 +08:00
|
|
|
for domain := range d.domains {
|
2025-09-26 18:49:36 +08:00
|
|
|
d.server.BindMiddleware(patternBindDomain(defaultMiddlewarePattern, domain), handlers...)
|
2019-08-06 20:40:04 +08:00
|
|
|
}
|
|
|
|
|
}
|
2020-02-28 23:00:05 +08:00
|
|
|
|
2022-03-19 17:58:21 +08:00
|
|
|
// Use adds middleware to the domain.
|
2020-02-28 23:00:05 +08:00
|
|
|
func (d *Domain) Use(handlers ...HandlerFunc) {
|
|
|
|
|
d.BindMiddlewareDefault(handlers...)
|
|
|
|
|
}
|
2025-09-26 18:49:36 +08:00
|
|
|
|
|
|
|
|
func patternBindDomain(pattern, domain string) string {
|
|
|
|
|
if domain != "" {
|
|
|
|
|
return pattern + "@" + domain
|
|
|
|
|
}
|
|
|
|
|
return pattern
|
|
|
|
|
}
|