From 7423b61c62150b18f9bc0b8ac9fca1e85a97d0b4 Mon Sep 17 00:00:00 2001 From: miurayuuki05 Date: Sat, 13 Jul 2024 08:43:35 +0700 Subject: [PATCH 1/3] Consolidate Docs To Their Own Folders --- ENG/ENG-01-Overview.md | 4 ++-- ENG/ENG-02-Installation.md | 4 ++-- ENG/ENG-03-Quick-Start.md | 2 +- ENG/ENG-04-0-Controller-Introduction.md | 2 +- ENG/ENG-04-1-Controller-HttpSimpleController.md | 2 +- ENG/ENG-04-2-Controller-HttpController.md | 2 +- ENG/ENG-04-3-Controller-WebSocketController.md | 2 +- ENG/ENG-05-Middleware-and-Filter.md | 2 +- ENG/ENG-06-View.md | 2 +- ENG/ENG-07-Session.md | 2 +- ENG/ENG-08-0-Database-General.md | 2 +- ENG/ENG-08-1-Database-DbClient.md | 2 +- ENG/ENG-08-2-Database-Transaction.md | 2 +- ENG/ENG-08-3-Database-ORM.md | 2 +- ENG/ENG-08-4-Database-FastDbClient.md | 2 +- ENG/ENG-08-5-Database-auto_batch.md | 2 +- ENG/ENG-09-0-References-request.md | 2 +- ENG/ENG-09-1-File-Handler.md | 2 +- ENG/ENG-10-Plugins.md | 2 +- ENG/ENG-11-Configuration-File.md | 2 +- ENG/ENG-12-drogon_ctl-Command.md | 2 +- ENG/ENG-13-AOP-Aspect-Oriented-Programming.md | 2 +- ENG/ENG-14-Benchmarks.md | 2 +- ENG/ENG-15-Coz.md | 2 +- ENG/ENG-16-Brotli.md | 2 +- ENG/ENG-17-Coroutines.md | 2 +- ENG/ENG-18-Redis.md | 2 +- 27 files changed, 29 insertions(+), 29 deletions(-) diff --git a/ENG/ENG-01-Overview.md b/ENG/ENG-01-Overview.md index 9c920c1..57439b6 100644 --- a/ENG/ENG-01-Overview.md +++ b/ENG/ENG-01-Overview.md @@ -1,4 +1,4 @@ -##### Other languages: [简体中文](/CHN//CHN//CHN/CHN-01-概述) +##### Other languages: [简体中文](/drogon-docs/#/CHN/CHN-01-概述) **Drogon** is a C++17/20-based HTTP application framework. Drogon can be used to easily build various types of web application server programs using C++. @@ -31,4 +31,4 @@ Its main features are as follows: * Support plugins which can be installed by the configuration file at load time; * Support AOP with build-in joinpoints. -# Next: [Install drogon](/ENG//ENG//ENG/ENG-02-Installation) +# Next: [Install drogon](/drogon-docs/#/ENG/ENG-02-Installation) diff --git a/ENG/ENG-02-Installation.md b/ENG/ENG-02-Installation.md index 96afd0a..d94af76 100644 --- a/ENG/ENG-02-Installation.md +++ b/ENG/ENG-02-Installation.md @@ -1,4 +1,4 @@ -##### Other languages: [简体中文](/CHN//CHN//CHN/CHN-02-安装) +##### Other languages: [简体中文](drogon-docs/#/CHN/CHN-02-安装) This section takes Ubuntu 18.04, CentOS 7.5, MacOS 12.2 as an example to introduce the installation process. Other systems are similar; @@ -481,4 +481,4 @@ Assuming that the above environment and library dependencies are all ready, the target_link_libraries(${PROJECT_NAME} PRIVATE drogon) ``` -# Next: [Quick Start](/ENG//ENG//ENG/ENG-03-Quick-Start) +# Next: [Quick Start](/drogon-docs/#/ENG/ENG-03-Quick-Start) diff --git a/ENG/ENG-03-Quick-Start.md b/ENG/ENG-03-Quick-Start.md index 9cd9ca2..b667e85 100644 --- a/ENG/ENG-03-Quick-Start.md +++ b/ENG/ENG-03-Quick-Start.md @@ -194,4 +194,4 @@ We see that adding a controller to an application is very simple. You only need > **Note: Drogon has no restrictions on the location of the controller source files. You could also save them in "./" (the project root directory), or you could even define a new directory in `CMakeLists.txt`. It is recommended to use the controllers directory for the convenience of management.** -# Next: [drogon_ctl Command](/ENG//ENG/ENG-04-0-Controller-Introduction) +# Next: [drogon_ctl Command](/drogon-docs/#/ENG/ENG-04-0-Controller-Introduction) diff --git a/ENG/ENG-04-0-Controller-Introduction.md b/ENG/ENG-04-0-Controller-Introduction.md index 01462fc..3884663 100644 --- a/ENG/ENG-04-0-Controller-Introduction.md +++ b/ENG/ENG-04-0-Controller-Introduction.md @@ -33,4 +33,4 @@ public: A controller registered to a drogon framework will have at most only one instance and will not be destroyed during the entire application run, so users can declare and use member variables in the controller class. Note that when the handler of the controller is called, it is in a multi-threaded environment (when the number of IO threads of the framework is configured to be greater than 1), if you need to access non-temporary variables, please do the concurrent protection work. -# Next: [HttpSimpleController](/ENG//ENG/ENG-04-1-Controller-HttpSimpleController) +# Next: [HttpSimpleController](/drogon-docs/#/ENG/ENG-04-1-Controller-HttpSimpleController) diff --git a/ENG/ENG-04-1-Controller-HttpSimpleController.md b/ENG/ENG-04-1-Controller-HttpSimpleController.md index f206169..5329f2b 100644 --- a/ENG/ENG-04-1-Controller-HttpSimpleController.md +++ b/ENG/ENG-04-1-Controller-HttpSimpleController.md @@ -64,4 +64,4 @@ You could define an HttpResponse class variable, and then use the callback() to > **The mapping from the above path to the handler is done at compile time. In fact, the drogon framework also provides an interface for runtime completion mapping. The runtime mapping allows the user to map or modify the mapping through configuration files or other user interfaces without recompiling this program (For performance reasons, it is forbidden to add any controller mapping after running the app().run() method).** -# Next: [HttpController](/ENG//ENG/ENG-04-2-Controller-HttpController) +# Next: [HttpController](/drogon-docs/#/ENG/ENG-04-2-Controller-HttpController) diff --git a/ENG/ENG-04-2-Controller-HttpController.md b/ENG/ENG-04-2-Controller-HttpController.md index 65f96b6..c34ebd1 100644 --- a/ENG/ENG-04-2-Controller-HttpController.md +++ b/ENG/ENG-04-2-Controller-HttpController.md @@ -279,4 +279,4 @@ Each `HttpController` class can define many Http request handlers. Since the num > **It should be noted that when using regular expressions, you should pay attention to matching conflicts (multiple different handlers are matched). When conflicts happen in the same controller, drogon will only execute the first handler (the one registered in the framework first). When conflicts happen between different controllers, it is uncertain which handler will be executed. Therefore, users need to avoid these conflicts.** -# Next: [WebSocketController](/ENG//ENG/ENG-04-3-Controller-WebSocketController) +# Next: [WebSocketController](/drogon-docs/#/ENG/ENG-04-3-Controller-WebSocketController) diff --git a/ENG/ENG-04-3-Controller-WebSocketController.md b/ENG/ENG-04-3-Controller-WebSocketController.md index ff86940..a5b6a24 100644 --- a/ENG/ENG-04-3-Controller-WebSocketController.md +++ b/ENG/ENG-04-3-Controller-WebSocketController.md @@ -150,4 +150,4 @@ void EchoWebsock::handleConnectionClosed(const WebSocketConnectionPtr &wsConnPtr any *getMutableContext(); ``` -# Next: [Middleware and Filter](/ENG//ENG/ENG-05-Middleware-and-Filter) +# Next: [Middleware and Filter](/drogon-docs/#/ENG/ENG-05-Middleware-and-Filter) diff --git a/ENG/ENG-05-Middleware-and-Filter.md b/ENG/ENG-05-Middleware-and-Filter.md index 4173cd8..c2d9e52 100644 --- a/ENG/ENG-05-Middleware-and-Filter.md +++ b/ENG/ENG-05-Middleware-and-Filter.md @@ -100,4 +100,4 @@ Drogon contains the following common filters: > **Note: If the middleware/filter is defined in the namespace, you must write the namespace completely when you register it.** -# Next: [View](/ENG//ENG/ENG-06-View) +# Next: [View](/drogon-docs/#/ENG/ENG-06-View) diff --git a/ENG/ENG-06-View.md b/ENG/ENG-06-View.md index da77524..8a7832b 100644 --- a/ENG/ENG-06-View.md +++ b/ENG/ENG-06-View.md @@ -151,4 +151,4 @@ Obviously, this function depends on the development environment. If both drogon > **Note: If a `symbol not found` error occurs while loading a dynamic view, please use the `cmake .. -DCMAKE_ENABLE_EXPORTS=on` to configure your project, or uncomment the last line (`set_property(TARGET ${PROJECT_NAME} PROPERTY ENABLE_EXPORTS ON)`) in your project's CMakeLists.txt, and then rebuild the project** -# Next: [Session](/ENG//ENG/ENG-07-Session) +# Next: [Session](/drogon-docs/#/ENG/ENG-07-Session) diff --git a/ENG/ENG-07-Session.md b/ENG/ENG-07-Session.md index 89b0e58..862f4a8 100644 --- a/ENG/ENG-07-Session.md +++ b/ENG/ENG-07-Session.md @@ -96,4 +96,4 @@ drogon::HttpAppFramework::instance().enableSession(1200); Recompile the entire project with CMake, run the target program webapp, and you can see the effect through the browser. -# Next: [Database](/ENG//ENG/ENG-08-0-Database-General) +# Next: [Database](/drogon-docs/#/ENG/ENG-08-0-Database-General) diff --git a/ENG/ENG-08-0-Database-General.md b/ENG/ENG-08-0-Database-General.md index 924e3b2..695cec3 100644 --- a/ENG/ENG-08-0-Database-General.md +++ b/ENG/ENG-08-0-Database-General.md @@ -24,4 +24,4 @@ The transaction object can be generated by `DbClient` to support transaction ope Drogon also provides support for **ORM**. Users can use the drogon_ctl command to read the tables in the database and generate the corresponding model source code. Then, execute the database operations of these models through the `Mapper` class template. Mapper provides simple and convenient interfaces for standard database operations, allowing users to make the additions, deletions, and changes to the table without writing sql statements. For **ORM**, please refer to [ORM](/ENG//ENG/ENG-08-3-Database-ORM) -# Next: [DbClient](/ENG//ENG/ENG-08-1-Database-DbClient) +# Next: [DbClient](/drogon-docs/#/ENG/ENG-08-1-Database-DbClient) diff --git a/ENG/ENG-08-1-Database-DbClient.md b/ENG/ENG-08-1-Database-DbClient.md index ff68808..ebe8be0 100644 --- a/ENG/ENG-08-1-Database-DbClient.md +++ b/ENG/ENG-08-1-Database-DbClient.md @@ -253,4 +253,4 @@ Each DbClient object has one or multiple its own EventLoop threads controlling t Blocking interfaces of DbClient only block the caller thread, as long as the caller thread is not the EventLoop thread, it will not affect the normal operation of the EventLoop thread. When the callback function is called, the program inside the callback is run on the EventLoop thread. Therefore, do not perform any blocking operations within the callback, otherwise it will affect the concurrency performance of database read and write. Anyone familiar with non-blocking I/O programming should understand this constraint. -# Next: [Transaction](/ENG//ENG/ENG-08-2-Database-Transaction) +# Next: [Transaction](/drogon-docs/#/ENG/ENG-08-2-Database-Transaction) diff --git a/ENG/ENG-08-2-Database-Transaction.md b/ENG/ENG-08-2-Database-Transaction.md index fa54aac..bd8efcb 100644 --- a/ENG/ENG-08-2-Database-Transaction.md +++ b/ENG/ENG-08-2-Database-Transaction.md @@ -83,4 +83,4 @@ For the simplest example, suppose there is a task table from which the user sele In this case, select for update is used to avoid concurrent modifications. The update statement is completed in the result callback of the select statement. The outermost braces are used to limit the scope of the transPtr so that it can be destroyed in time after the execution of sql to end the transaction. -# Next: [ORM](/ENG//ENG/ENG-08-3-Database-ORM) +# Next: [ORM](/drogon-docs/#/ENG/ENG-08-3-Database-ORM) diff --git a/ENG/ENG-08-3-Database-ORM.md b/ENG/ENG-08-3-Database-ORM.md index 0add918..98c8669 100644 --- a/ENG/ENG-08-3-Database-ORM.md +++ b/ENG/ENG-08-3-Database-ORM.md @@ -286,4 +286,4 @@ drogon_ctl can also generate restful-style controllers for each model (or table) It should be noted that the controller of each table is designed to be composed of a base class and a subclass. Among them, the base class and the table are closely related, and the subclass is used to implement special business logic or modify the interface format. The advantage of this design is that when the table structure changes, users can update only the base class without overwriting the subclass(by setting the `generate_base_only` option to `true`). -# Next: [FastDbClient](/ENG//ENG/ENG-08-4-Database-FastDbClient) +# Next: [FastDbClient](/drogon-docs/#/ENG/ENG-08-4-Database-FastDbClient) diff --git a/ENG/ENG-08-4-Database-FastDbClient.md b/ENG/ENG-08-4-Database-FastDbClient.md index 07922ac..0c076d7 100644 --- a/ENG/ENG-08-4-Database-FastDbClient.md +++ b/ENG/ENG-08-4-Database-FastDbClient.md @@ -30,4 +30,4 @@ The use of FastDbClient is almost identical to that of the normal DbClient, exce - Synchronous transaction creation interfaces are likely to block (when all connections are busy), so FastDbClient's synchronous transaction creation interface returns null pointers directly. If you want to use transactions on FastDbClient, please use the asynchronous transaction creation interface. - After using the FastDbClient to create an Orm Mapper object, you should also use only asynchronous non-blocking interfaces of the mapper object. -# Next: [Automatic batch mode](/ENG//ENG/ENG-08-5-Database-auto_batch) +# Next: [Automatic batch mode](/drogon-docs/#/ENG/ENG-08-5-Database-auto_batch) diff --git a/ENG/ENG-08-5-Database-auto_batch.md b/ENG/ENG-08-5-Database-auto_batch.md index 9405996..510d24a 100644 --- a/ENG/ENG-08-5-Database-auto_batch.md +++ b/ENG/ENG-08-5-Database-auto_batch.md @@ -33,4 +33,4 @@ Therefore, automatic batch mode is helpful to improve performance, but it is not When using the newPgClient interface to create a client, set the third parameter to true to enable automatic batch mode; When using a configuration file to create a client, set the auto_batch option to true to enable automatic batch mode for the client; -# Next: [Request References](/ENG//ENG/ENG-09-0-References-request) +# Next: [Request References](/drogon-docs/#/ENG/ENG-09-0-References-request) diff --git a/ENG/ENG-09-0-References-request.md b/ENG/ENG-09-0-References-request.md index 7896981..c77cd9c 100644 --- a/ENG/ENG-09-0-References-request.md +++ b/ENG/ENG-09-0-References-request.md @@ -267,4 +267,4 @@ void mycontroller::postfile(const HttpRequestPtr &req, std::function Date: Sat, 13 Jul 2024 09:05:01 +0700 Subject: [PATCH 2/3] ENG to CHN Fix --- ENG/ENG-03-Quick-Start.md | 2 +- ENG/ENG-04-0-Controller-Introduction.md | 2 +- ENG/ENG-04-1-Controller-HttpSimpleController.md | 2 +- ENG/ENG-04-2-Controller-HttpController.md | 2 +- ENG/ENG-04-3-Controller-WebSocketController.md | 2 +- ENG/ENG-05-Middleware-and-Filter.md | 2 +- ENG/ENG-06-View.md | 2 +- ENG/ENG-07-Session.md | 2 +- ENG/ENG-08-0-Database-General.md | 2 +- ENG/ENG-08-1-Database-DbClient.md | 2 +- ENG/ENG-08-2-Database-Transaction.md | 2 +- ENG/ENG-08-3-Database-ORM.md | 2 +- ENG/ENG-08-4-Database-FastDbClient.md | 2 +- ENG/ENG-08-5-Database-auto_batch.md | 2 +- ENG/ENG-10-Plugins.md | 2 +- ENG/ENG-11-Configuration-File.md | 2 +- ENG/ENG-12-drogon_ctl-Command.md | 2 +- ENG/ENG-13-AOP-Aspect-Oriented-Programming.md | 2 +- ENG/ENG-14-Benchmarks.md | 2 +- ENG/ENG-15-Coz.md | 2 +- ENG/ENG-17-Coroutines.md | 2 +- ENG/ENG-18-Redis.md | 2 +- ENG/ENG-19-Testing-Framework.md | 2 +- ENG/ENG-FAQ-1-Understanding-drogon-threading-model.md | 2 +- ENG/ENG-FAQ.md | 2 +- 25 files changed, 25 insertions(+), 25 deletions(-) diff --git a/ENG/ENG-03-Quick-Start.md b/ENG/ENG-03-Quick-Start.md index b667e85..26913c8 100644 --- a/ENG/ENG-03-Quick-Start.md +++ b/ENG/ENG-03-Quick-Start.md @@ -1,4 +1,4 @@ -##### Other languages: [简体中文](/CHN//CHN//CHN/CHN-03-快速开始) +##### Other languages: [简体中文](/drogon-docs/#/CHN/CHN-03-快速开始) ## Static Site diff --git a/ENG/ENG-04-0-Controller-Introduction.md b/ENG/ENG-04-0-Controller-Introduction.md index 3884663..5226494 100644 --- a/ENG/ENG-04-0-Controller-Introduction.md +++ b/ENG/ENG-04-0-Controller-Introduction.md @@ -1,4 +1,4 @@ -##### Other languages: [简体中文](/CHN//CHN/CHN-04-控制器-简介) +##### Other languages: [简体中文](/drogon-docs/#/CHN/CHN-04-0-控制器-简介) The controller is very important in web application development. This is where we will define our URLs, which HTTP methods are allowed, which [filters](/ENG//ENG/ENG-06-Middleware-and-Filter) will be applied and how requests will be processed and responded to. The drogon framework has helped us to handle the network transmission, Http protocol analysis and so on. We only need to pay attention to the logic of the controller; each controller object can have one or more processing functions (generally called handlers), and the interface of the function is generally defined as follows: diff --git a/ENG/ENG-04-1-Controller-HttpSimpleController.md b/ENG/ENG-04-1-Controller-HttpSimpleController.md index 5329f2b..3f2bbde 100644 --- a/ENG/ENG-04-1-Controller-HttpSimpleController.md +++ b/ENG/ENG-04-1-Controller-HttpSimpleController.md @@ -1,4 +1,4 @@ -##### Other languages: [简体中文](/CHN//CHN/CHN-04-1-控制器-HttpSimpleController) +##### Other languages: [简体中文](/drogon-docs/#/CHN/CHN-04-1-控制器-HttpSimpleController) You could use the `drogon_ctl` command line tool to quickly generate custom controller class source files based on `HttpSimpleController`. The command format is as bellow: diff --git a/ENG/ENG-04-2-Controller-HttpController.md b/ENG/ENG-04-2-Controller-HttpController.md index c34ebd1..659ef09 100644 --- a/ENG/ENG-04-2-Controller-HttpController.md +++ b/ENG/ENG-04-2-Controller-HttpController.md @@ -1,4 +1,4 @@ -##### Other languages: [简体中文](/CHN//CHN/CHN-04-2-控制器-HttpController) +##### Other languages: [简体中文](/drogon-docs/#/CHN/CHN-04-2-控制器-HttpController) ### Generation diff --git a/ENG/ENG-04-3-Controller-WebSocketController.md b/ENG/ENG-04-3-Controller-WebSocketController.md index a5b6a24..a3f0780 100644 --- a/ENG/ENG-04-3-Controller-WebSocketController.md +++ b/ENG/ENG-04-3-Controller-WebSocketController.md @@ -1,4 +1,4 @@ -##### Other languages: [简体中文](/CHN//CHN/CHN-04-3-控制器-WebSocketController) +##### Other languages: [简体中文](/drogon-docs/#/CHN/CHN-04-3-控制器-WebSocketController) As the name implies, `WebSocketController` is used to process websocket logic. Websocket is a persistent HTTP-based connection scheme. At the beginning of the websocket, there is an HTTP format request and response exchange. After the websocket connection is established, all messages are transmitted on the websocket. The message is wrapped in a fixed format. There is no limit to the message content and the order in which messages are transmitted. diff --git a/ENG/ENG-05-Middleware-and-Filter.md b/ENG/ENG-05-Middleware-and-Filter.md index c2d9e52..85b3215 100644 --- a/ENG/ENG-05-Middleware-and-Filter.md +++ b/ENG/ENG-05-Middleware-and-Filter.md @@ -1,4 +1,4 @@ -##### Other languages: [简体中文](/CHN//CHN/CHN-05-中间件和过滤器) +##### Other languages: [简体中文](/drogon-docs/#/CHN/CHN-05-中间件和过滤器) In HttpController's [example](/ENG//ENG/ENG-04-2-Controller-HttpController), the getInfo method should check whether the user is logged in before returning the user's information. We can write this logic in the getInfo method, but obviously, checking the user's login membership is general logic which will be used by many interfaces, it should be extracted separately and configured before calling handler, which is what filters do. diff --git a/ENG/ENG-06-View.md b/ENG/ENG-06-View.md index 8a7832b..9077b0e 100644 --- a/ENG/ENG-06-View.md +++ b/ENG/ENG-06-View.md @@ -1,4 +1,4 @@ -##### Other languages: [简体中文](/CHN//CHN/CHN-06-视图) +##### Other languages: [简体中文](/drogon-docs/#/CHN/CHN-06-视图) ### Views Introduction diff --git a/ENG/ENG-07-Session.md b/ENG/ENG-07-Session.md index 862f4a8..c4f8a5d 100644 --- a/ENG/ENG-07-Session.md +++ b/ENG/ENG-07-Session.md @@ -1,4 +1,4 @@ -##### Other languages: [简体中文](/CHN//CHN/CHN-07-会话) +##### Other languages: [简体中文](/drogon-docs/#/CHN/CHN-07-会话) `Session` is an important concept of the web application. It is used to save the state of the client on the server. Generally, it cooperates with the browser's `cookie`, and drogon provides support for the session. Drogon **close** the session selection by default, you can also close or open it through the following interface: diff --git a/ENG/ENG-08-0-Database-General.md b/ENG/ENG-08-0-Database-General.md index 695cec3..450880f 100644 --- a/ENG/ENG-08-0-Database-General.md +++ b/ENG/ENG-08-0-Database-General.md @@ -1,4 +1,4 @@ -##### Other languages: [简体中文](/CHN//CHN/CHN-08-0-数据库-概述) +##### Other languages: [简体中文](/drogon-docs/#/CHN/CHN-08-0-数据库-概述) ### General diff --git a/ENG/ENG-08-1-Database-DbClient.md b/ENG/ENG-08-1-Database-DbClient.md index ebe8be0..37c63a0 100644 --- a/ENG/ENG-08-1-Database-DbClient.md +++ b/ENG/ENG-08-1-Database-DbClient.md @@ -1,4 +1,4 @@ -##### Other languages: [简体中文](/CHN//CHN/CHN-08-1-数据库-DbClient) +##### Other languages: [简体中文](/drogon-docs/#/CHN/CHN-08-1-数据库-DbClient) ### DbClient Object Construction diff --git a/ENG/ENG-08-2-Database-Transaction.md b/ENG/ENG-08-2-Database-Transaction.md index bd8efcb..381ca8e 100644 --- a/ENG/ENG-08-2-Database-Transaction.md +++ b/ENG/ENG-08-2-Database-Transaction.md @@ -1,4 +1,4 @@ -##### Other languages: [简体中文](/CHN//CHN/CHN-08-2-数据库-事务) +##### Other languages: [简体中文](/drogon-docs/#/CHN/CHN-08-2-数据库-事务) > **Transactions** are an important feature of relational databases, and Drogon provides transaction support with the `Transaction` class. diff --git a/ENG/ENG-08-3-Database-ORM.md b/ENG/ENG-08-3-Database-ORM.md index 98c8669..6f34fb4 100644 --- a/ENG/ENG-08-3-Database-ORM.md +++ b/ENG/ENG-08-3-Database-ORM.md @@ -1,4 +1,4 @@ -##### Other languages: [简体中文](/CHN//CHN/CHN-08-3-数据库-ORM) +##### Other languages: [简体中文](/drogon-docs/#/CHN/CHN-08-3-数据库-ORM) ### Model diff --git a/ENG/ENG-08-4-Database-FastDbClient.md b/ENG/ENG-08-4-Database-FastDbClient.md index 0c076d7..fdb59f2 100644 --- a/ENG/ENG-08-4-Database-FastDbClient.md +++ b/ENG/ENG-08-4-Database-FastDbClient.md @@ -1,4 +1,4 @@ -##### Other languages: [简体中文](/CHN//CHN/CHN-08-4-数据库-FastDbClient) +##### Other languages: [简体中文](/drogon-docs/#/CHN/CHN-08-4-数据库-FastDbClient) As the name implies, FastDbClient will provide higher performance than the normal DbClient. Unlike DbClient has own event loop, it shares the event loop with network IO threads and the main thread of the web application, which makes the internal implementation of FastDbClient available in a lock-free mode and more efficient. diff --git a/ENG/ENG-08-5-Database-auto_batch.md b/ENG/ENG-08-5-Database-auto_batch.md index 510d24a..6d7ccc9 100644 --- a/ENG/ENG-08-5-Database-auto_batch.md +++ b/ENG/ENG-08-5-Database-auto_batch.md @@ -1,4 +1,4 @@ -##### Other languages: [简体中文](/CHN//CHN/CHN-08-5-数据库-自动批处理) +##### Other languages: [简体中文](/drogon-docs/#/CHN/CHN-08-5-数据库-自动批处理) The automatic batch mode is only valid for the client library of postgresql 14+ version, and will be ignored in other cases. Before talking about automatic batch processing, let's understand the pipeline mode first. diff --git a/ENG/ENG-10-Plugins.md b/ENG/ENG-10-Plugins.md index 9693959..32dddb7 100644 --- a/ENG/ENG-10-Plugins.md +++ b/ENG/ENG-10-Plugins.md @@ -1,4 +1,4 @@ -##### Other languages: [简体中文](/CHN//CHN/CHN-09-插件) +##### Other languages: [简体中文](/drogon-docs/#/CHN/CHN-09-插件) Plugins are use to help users build complex applications. In Drogon, all plugins are built and installed into the application based on the configuration file. Plugins in Drogon are single-instance, and users can implement any functionality they want with plugins. diff --git a/ENG/ENG-11-Configuration-File.md b/ENG/ENG-11-Configuration-File.md index d766ef4..4f0e376 100644 --- a/ENG/ENG-11-Configuration-File.md +++ b/ENG/ENG-11-Configuration-File.md @@ -1,4 +1,4 @@ -##### Other languages: [简体中文](/CHN//CHN/CHN-10-配置文件) +##### Other languages: [简体中文](/drogon-docs/#/CHN/CHN-10-配置文件) You can control various behaviors of the Http server by configuring various parameters through multiple interfaces of the DrogonAppFramework instance. However, using a configuration file is a better way for the following reasons: diff --git a/ENG/ENG-12-drogon_ctl-Command.md b/ENG/ENG-12-drogon_ctl-Command.md index 6c087dd..2c76c38 100644 --- a/ENG/ENG-12-drogon_ctl-Command.md +++ b/ENG/ENG-12-drogon_ctl-Command.md @@ -1,4 +1,4 @@ -##### Other languages: [简体中文](/CHN//CHN/CHN-11-drogon_ctl命令) +##### Other languages: [简体中文](/drogon-docs/#/CHN/CHN-11-drogon_ctl命令) After the **Drogon** framework is compiled and installed, it is recommended to create your first project using the command line program `drogon_ctl` which is installed alongside the framework, for convenience there is the shortened command `dg_ctl`. Users can choose according to their preferences. diff --git a/ENG/ENG-13-AOP-Aspect-Oriented-Programming.md b/ENG/ENG-13-AOP-Aspect-Oriented-Programming.md index d805c9e..56865e8 100644 --- a/ENG/ENG-13-AOP-Aspect-Oriented-Programming.md +++ b/ENG/ENG-13-AOP-Aspect-Oriented-Programming.md @@ -1,4 +1,4 @@ -##### Other languages: [简体中文](/CHN//CHN/CHN-12-AOP面向切面编程) +##### Other languages: [简体中文](/drogon-docs/#/CHN/CHN-12-AOP面向切面编程) AOP(Aspect Oriented Programming) is a programming paradigm that aims to increase modularity by allowing the separation of cross-cutting concerns(Quoted from Wikipedia). diff --git a/ENG/ENG-14-Benchmarks.md b/ENG/ENG-14-Benchmarks.md index 4f9f7ee..6095b8c 100644 --- a/ENG/ENG-14-Benchmarks.md +++ b/ENG/ENG-14-Benchmarks.md @@ -1,4 +1,4 @@ -##### Other languages: [简体中文](/CHN//CHN/CHN-13-性能测试) +##### Other languages: [简体中文](/drogon-docs/#/CHN/CHN-13-性能测试) As a C++ Http application framework, performance should be one of the focus of attention. This section introduces Drogon's simple tests and achievements; diff --git a/ENG/ENG-15-Coz.md b/ENG/ENG-15-Coz.md index e123fbe..8a24150 100644 --- a/ENG/ENG-15-Coz.md +++ b/ENG/ENG-15-Coz.md @@ -1,4 +1,4 @@ -##### Other languages: [简体中文](/CHN//CHN/CHN-14-Coz分析) +##### Other languages: [简体中文](/drogon-docs/#/CHN/CHN-14-Coz分析) ## Causal profiling with coz diff --git a/ENG/ENG-17-Coroutines.md b/ENG/ENG-17-Coroutines.md index 97de40a..9c034f6 100644 --- a/ENG/ENG-17-Coroutines.md +++ b/ENG/ENG-17-Coroutines.md @@ -1,4 +1,4 @@ -##### Other languages: [简体中文](/CHN//CHN/CHN-16-协程) +##### Other languages: [简体中文](/drogon-docs/#/CHN/CHN-16-协程) Drogon supports [C++ coroutines][1] starting from version 1.4. They provide a way to flatten the control flow of asynchronous calls, i.e. escaping the callback hell. With it, asynchronous programming becomes as easy as synchronous programming. diff --git a/ENG/ENG-18-Redis.md b/ENG/ENG-18-Redis.md index c5b18a6..775b2aa 100644 --- a/ENG/ENG-18-Redis.md +++ b/ENG/ENG-18-Redis.md @@ -1,4 +1,4 @@ -##### Other languages: [简体中文](/CHN//CHN/CHN-17-Redis) +##### Other languages: [简体中文](/drogon-docs/#/CHN/CHN-17-Redis) Drogon supports Redis, a very fast, in-memory data store. Which could be used as a database cache or a message broker. Like everything in Drogon, Redis connections are asynchronous. Which ensures Drogon running with very high concurrency even under heavy load. diff --git a/ENG/ENG-19-Testing-Framework.md b/ENG/ENG-19-Testing-Framework.md index 209df62..5acae18 100644 --- a/ENG/ENG-19-Testing-Framework.md +++ b/ENG/ENG-19-Testing-Framework.md @@ -1,4 +1,4 @@ -##### Other languages: [简体中文](/CHN//CHN/CHN-18-测试框架) +##### Other languages: [简体中文](/drogon-docs/#/CHN/CHN-18-测试框架) DrogonTest is a minimal testing framework built into drogon to enable easy asynchronous testing as well as synchronous ones. It is used for Drogon's own unittests and integration tests. But could also be used for testing applications built with Drogon. The syntax of DrogonTest is inspired by both [GTest](https://github.com/google/googletest) and [Catch2](https://github.com/catchorg/Catch2). diff --git a/ENG/ENG-FAQ-1-Understanding-drogon-threading-model.md b/ENG/ENG-FAQ-1-Understanding-drogon-threading-model.md index a56f565..5ed86f0 100644 --- a/ENG/ENG-FAQ-1-Understanding-drogon-threading-model.md +++ b/ENG/ENG-FAQ-1-Understanding-drogon-threading-model.md @@ -1,4 +1,4 @@ -##### Other languages: [简体中文](/CHN//CHN/CHN-FAQ-1-线程模型.md) +##### Other languages: [简体中文](/drogon-docs/#/CHN/CHN-FAQ-1-线程模型) # Understanding Drogon's threading model diff --git a/ENG/ENG-FAQ.md b/ENG/ENG-FAQ.md index 0e55278..39e43e8 100644 --- a/ENG/ENG-FAQ.md +++ b/ENG/ENG-FAQ.md @@ -1,4 +1,4 @@ -##### Other languages: [简体中文](/CHN//CHN/CHN-FAQ) +##### Other languages: [简体中文](/drogon-docs/#/CHN/CHN-FAQ) # FAQ From 71e1435cbd58c395303a5030e530c40f5b532b39 Mon Sep 17 00:00:00 2001 From: miurayuuki05 Date: Sat, 13 Jul 2024 10:27:44 +0700 Subject: [PATCH 3/3] Fix more link [ENG] --- ENG/ENG-01-Overview.md | 4 ++-- ENG/ENG-02-Installation.md | 4 ++-- ENG/ENG-03-Quick-Start.md | 4 ++-- ENG/ENG-04-0-Controller-Introduction.md | 4 ++-- ENG/ENG-04-1-Controller-HttpSimpleController.md | 4 ++-- ENG/ENG-04-2-Controller-HttpController.md | 4 ++-- ENG/ENG-04-3-Controller-WebSocketController.md | 4 ++-- ENG/ENG-05-Middleware-and-Filter.md | 4 ++-- ENG/ENG-06-View.md | 4 ++-- ENG/ENG-07-Session.md | 4 ++-- ENG/ENG-08-0-Database-General.md | 4 ++-- ENG/ENG-08-1-Database-DbClient.md | 4 ++-- ENG/ENG-08-2-Database-Transaction.md | 4 ++-- ENG/ENG-08-3-Database-ORM.md | 4 ++-- ENG/ENG-08-4-Database-FastDbClient.md | 4 ++-- ENG/ENG-08-5-Database-auto_batch.md | 4 ++-- ENG/ENG-09-0-References-request.md | 2 +- ENG/ENG-09-1-File-Handler.md | 2 +- ENG/ENG-10-Plugins.md | 4 ++-- ENG/ENG-11-Configuration-File.md | 4 ++-- ENG/ENG-12-drogon_ctl-Command.md | 4 ++-- ENG/ENG-13-AOP-Aspect-Oriented-Programming.md | 4 ++-- ENG/ENG-14-Benchmarks.md | 4 ++-- ENG/ENG-15-Coz.md | 4 ++-- ENG/ENG-16-Brotli.md | 4 ++-- ENG/ENG-17-Coroutines.md | 4 ++-- ENG/ENG-18-Redis.md | 4 ++-- ENG/ENG-19-Testing-Framework.md | 2 +- ENG/ENG-FAQ-1-Understanding-drogon-threading-model.md | 2 +- ENG/ENG-FAQ.md | 4 ++-- 30 files changed, 56 insertions(+), 56 deletions(-) diff --git a/ENG/ENG-01-Overview.md b/ENG/ENG-01-Overview.md index 57439b6..32ed056 100644 --- a/ENG/ENG-01-Overview.md +++ b/ENG/ENG-01-Overview.md @@ -1,4 +1,4 @@ -##### Other languages: [简体中文](/drogon-docs/#/CHN/CHN-01-概述) +##### Other languages: [简体中文](/CHN/CHN-01-概述) **Drogon** is a C++17/20-based HTTP application framework. Drogon can be used to easily build various types of web application server programs using C++. @@ -31,4 +31,4 @@ Its main features are as follows: * Support plugins which can be installed by the configuration file at load time; * Support AOP with build-in joinpoints. -# Next: [Install drogon](/drogon-docs/#/ENG/ENG-02-Installation) +# Next: [Install drogon](/ENG/ENG-02-Installation) diff --git a/ENG/ENG-02-Installation.md b/ENG/ENG-02-Installation.md index d94af76..09c725c 100644 --- a/ENG/ENG-02-Installation.md +++ b/ENG/ENG-02-Installation.md @@ -1,4 +1,4 @@ -##### Other languages: [简体中文](drogon-docs/#/CHN/CHN-02-安装) +##### Other languages: [简体中文](/CHN/CHN-02-安装) This section takes Ubuntu 18.04, CentOS 7.5, MacOS 12.2 as an example to introduce the installation process. Other systems are similar; @@ -481,4 +481,4 @@ Assuming that the above environment and library dependencies are all ready, the target_link_libraries(${PROJECT_NAME} PRIVATE drogon) ``` -# Next: [Quick Start](/drogon-docs/#/ENG/ENG-03-Quick-Start) +# Next: [Quick Start](/ENG/ENG-03-Quick-Start) diff --git a/ENG/ENG-03-Quick-Start.md b/ENG/ENG-03-Quick-Start.md index 26913c8..a90261e 100644 --- a/ENG/ENG-03-Quick-Start.md +++ b/ENG/ENG-03-Quick-Start.md @@ -1,4 +1,4 @@ -##### Other languages: [简体中文](/drogon-docs/#/CHN/CHN-03-快速开始) +##### Other languages: [简体中文](/CHN/CHN-03-快速开始) ## Static Site @@ -194,4 +194,4 @@ We see that adding a controller to an application is very simple. You only need > **Note: Drogon has no restrictions on the location of the controller source files. You could also save them in "./" (the project root directory), or you could even define a new directory in `CMakeLists.txt`. It is recommended to use the controllers directory for the convenience of management.** -# Next: [drogon_ctl Command](/drogon-docs/#/ENG/ENG-04-0-Controller-Introduction) +# Next: [drogon_ctl Command](/ENG/ENG-04-0-Controller-Introduction) diff --git a/ENG/ENG-04-0-Controller-Introduction.md b/ENG/ENG-04-0-Controller-Introduction.md index 5226494..208cb78 100644 --- a/ENG/ENG-04-0-Controller-Introduction.md +++ b/ENG/ENG-04-0-Controller-Introduction.md @@ -1,4 +1,4 @@ -##### Other languages: [简体中文](/drogon-docs/#/CHN/CHN-04-0-控制器-简介) +##### Other languages: [简体中文](/CHN/CHN-04-0-控制器-简介) The controller is very important in web application development. This is where we will define our URLs, which HTTP methods are allowed, which [filters](/ENG//ENG/ENG-06-Middleware-and-Filter) will be applied and how requests will be processed and responded to. The drogon framework has helped us to handle the network transmission, Http protocol analysis and so on. We only need to pay attention to the logic of the controller; each controller object can have one or more processing functions (generally called handlers), and the interface of the function is generally defined as follows: @@ -33,4 +33,4 @@ public: A controller registered to a drogon framework will have at most only one instance and will not be destroyed during the entire application run, so users can declare and use member variables in the controller class. Note that when the handler of the controller is called, it is in a multi-threaded environment (when the number of IO threads of the framework is configured to be greater than 1), if you need to access non-temporary variables, please do the concurrent protection work. -# Next: [HttpSimpleController](/drogon-docs/#/ENG/ENG-04-1-Controller-HttpSimpleController) +# Next: [HttpSimpleController](/ENG/ENG-04-1-Controller-HttpSimpleController) diff --git a/ENG/ENG-04-1-Controller-HttpSimpleController.md b/ENG/ENG-04-1-Controller-HttpSimpleController.md index 3f2bbde..d537b25 100644 --- a/ENG/ENG-04-1-Controller-HttpSimpleController.md +++ b/ENG/ENG-04-1-Controller-HttpSimpleController.md @@ -1,4 +1,4 @@ -##### Other languages: [简体中文](/drogon-docs/#/CHN/CHN-04-1-控制器-HttpSimpleController) +##### Other languages: [简体中文](/CHN/CHN-04-1-控制器-HttpSimpleController) You could use the `drogon_ctl` command line tool to quickly generate custom controller class source files based on `HttpSimpleController`. The command format is as bellow: @@ -64,4 +64,4 @@ You could define an HttpResponse class variable, and then use the callback() to > **The mapping from the above path to the handler is done at compile time. In fact, the drogon framework also provides an interface for runtime completion mapping. The runtime mapping allows the user to map or modify the mapping through configuration files or other user interfaces without recompiling this program (For performance reasons, it is forbidden to add any controller mapping after running the app().run() method).** -# Next: [HttpController](/drogon-docs/#/ENG/ENG-04-2-Controller-HttpController) +# Next: [HttpController](/ENG/ENG-04-2-Controller-HttpController) diff --git a/ENG/ENG-04-2-Controller-HttpController.md b/ENG/ENG-04-2-Controller-HttpController.md index 659ef09..c5b9177 100644 --- a/ENG/ENG-04-2-Controller-HttpController.md +++ b/ENG/ENG-04-2-Controller-HttpController.md @@ -1,4 +1,4 @@ -##### Other languages: [简体中文](/drogon-docs/#/CHN/CHN-04-2-控制器-HttpController) +##### Other languages: [简体中文](/CHN/CHN-04-2-控制器-HttpController) ### Generation @@ -279,4 +279,4 @@ Each `HttpController` class can define many Http request handlers. Since the num > **It should be noted that when using regular expressions, you should pay attention to matching conflicts (multiple different handlers are matched). When conflicts happen in the same controller, drogon will only execute the first handler (the one registered in the framework first). When conflicts happen between different controllers, it is uncertain which handler will be executed. Therefore, users need to avoid these conflicts.** -# Next: [WebSocketController](/drogon-docs/#/ENG/ENG-04-3-Controller-WebSocketController) +# Next: [WebSocketController](/ENG/ENG-04-3-Controller-WebSocketController) diff --git a/ENG/ENG-04-3-Controller-WebSocketController.md b/ENG/ENG-04-3-Controller-WebSocketController.md index a3f0780..2bc9187 100644 --- a/ENG/ENG-04-3-Controller-WebSocketController.md +++ b/ENG/ENG-04-3-Controller-WebSocketController.md @@ -1,4 +1,4 @@ -##### Other languages: [简体中文](/drogon-docs/#/CHN/CHN-04-3-控制器-WebSocketController) +##### Other languages: [简体中文](/CHN/CHN-04-3-控制器-WebSocketController) As the name implies, `WebSocketController` is used to process websocket logic. Websocket is a persistent HTTP-based connection scheme. At the beginning of the websocket, there is an HTTP format request and response exchange. After the websocket connection is established, all messages are transmitted on the websocket. The message is wrapped in a fixed format. There is no limit to the message content and the order in which messages are transmitted. @@ -150,4 +150,4 @@ void EchoWebsock::handleConnectionClosed(const WebSocketConnectionPtr &wsConnPtr any *getMutableContext(); ``` -# Next: [Middleware and Filter](/drogon-docs/#/ENG/ENG-05-Middleware-and-Filter) +# Next: [Middleware and Filter](/ENG/ENG-05-Middleware-and-Filter) diff --git a/ENG/ENG-05-Middleware-and-Filter.md b/ENG/ENG-05-Middleware-and-Filter.md index 85b3215..cc68ee4 100644 --- a/ENG/ENG-05-Middleware-and-Filter.md +++ b/ENG/ENG-05-Middleware-and-Filter.md @@ -1,4 +1,4 @@ -##### Other languages: [简体中文](/drogon-docs/#/CHN/CHN-05-中间件和过滤器) +##### Other languages: [简体中文](/CHN/CHN-05-中间件和过滤器) In HttpController's [example](/ENG//ENG/ENG-04-2-Controller-HttpController), the getInfo method should check whether the user is logged in before returning the user's information. We can write this logic in the getInfo method, but obviously, checking the user's login membership is general logic which will be used by many interfaces, it should be extracted separately and configured before calling handler, which is what filters do. @@ -100,4 +100,4 @@ Drogon contains the following common filters: > **Note: If the middleware/filter is defined in the namespace, you must write the namespace completely when you register it.** -# Next: [View](/drogon-docs/#/ENG/ENG-06-View) +# Next: [View](/ENG/ENG-06-View) diff --git a/ENG/ENG-06-View.md b/ENG/ENG-06-View.md index 9077b0e..628de19 100644 --- a/ENG/ENG-06-View.md +++ b/ENG/ENG-06-View.md @@ -1,4 +1,4 @@ -##### Other languages: [简体中文](/drogon-docs/#/CHN/CHN-06-视图) +##### Other languages: [简体中文](/CHN/CHN-06-视图) ### Views Introduction @@ -151,4 +151,4 @@ Obviously, this function depends on the development environment. If both drogon > **Note: If a `symbol not found` error occurs while loading a dynamic view, please use the `cmake .. -DCMAKE_ENABLE_EXPORTS=on` to configure your project, or uncomment the last line (`set_property(TARGET ${PROJECT_NAME} PROPERTY ENABLE_EXPORTS ON)`) in your project's CMakeLists.txt, and then rebuild the project** -# Next: [Session](/drogon-docs/#/ENG/ENG-07-Session) +# Next: [Session](/ENG/ENG-07-Session) diff --git a/ENG/ENG-07-Session.md b/ENG/ENG-07-Session.md index c4f8a5d..8eee5ab 100644 --- a/ENG/ENG-07-Session.md +++ b/ENG/ENG-07-Session.md @@ -1,4 +1,4 @@ -##### Other languages: [简体中文](/drogon-docs/#/CHN/CHN-07-会话) +##### Other languages: [简体中文](/CHN/CHN-07-会话) `Session` is an important concept of the web application. It is used to save the state of the client on the server. Generally, it cooperates with the browser's `cookie`, and drogon provides support for the session. Drogon **close** the session selection by default, you can also close or open it through the following interface: @@ -96,4 +96,4 @@ drogon::HttpAppFramework::instance().enableSession(1200); Recompile the entire project with CMake, run the target program webapp, and you can see the effect through the browser. -# Next: [Database](/drogon-docs/#/ENG/ENG-08-0-Database-General) +# Next: [Database](/ENG/ENG-08-0-Database-General) diff --git a/ENG/ENG-08-0-Database-General.md b/ENG/ENG-08-0-Database-General.md index 450880f..6c7ec19 100644 --- a/ENG/ENG-08-0-Database-General.md +++ b/ENG/ENG-08-0-Database-General.md @@ -1,4 +1,4 @@ -##### Other languages: [简体中文](/drogon-docs/#/CHN/CHN-08-0-数据库-概述) +##### Other languages: [简体中文](/CHN/CHN-08-0-数据库-概述) ### General @@ -24,4 +24,4 @@ The transaction object can be generated by `DbClient` to support transaction ope Drogon also provides support for **ORM**. Users can use the drogon_ctl command to read the tables in the database and generate the corresponding model source code. Then, execute the database operations of these models through the `Mapper` class template. Mapper provides simple and convenient interfaces for standard database operations, allowing users to make the additions, deletions, and changes to the table without writing sql statements. For **ORM**, please refer to [ORM](/ENG//ENG/ENG-08-3-Database-ORM) -# Next: [DbClient](/drogon-docs/#/ENG/ENG-08-1-Database-DbClient) +# Next: [DbClient](/ENG/ENG-08-1-Database-DbClient) diff --git a/ENG/ENG-08-1-Database-DbClient.md b/ENG/ENG-08-1-Database-DbClient.md index 37c63a0..b223698 100644 --- a/ENG/ENG-08-1-Database-DbClient.md +++ b/ENG/ENG-08-1-Database-DbClient.md @@ -1,4 +1,4 @@ -##### Other languages: [简体中文](/drogon-docs/#/CHN/CHN-08-1-数据库-DbClient) +##### Other languages: [简体中文](/CHN/CHN-08-1-数据库-DbClient) ### DbClient Object Construction @@ -253,4 +253,4 @@ Each DbClient object has one or multiple its own EventLoop threads controlling t Blocking interfaces of DbClient only block the caller thread, as long as the caller thread is not the EventLoop thread, it will not affect the normal operation of the EventLoop thread. When the callback function is called, the program inside the callback is run on the EventLoop thread. Therefore, do not perform any blocking operations within the callback, otherwise it will affect the concurrency performance of database read and write. Anyone familiar with non-blocking I/O programming should understand this constraint. -# Next: [Transaction](/drogon-docs/#/ENG/ENG-08-2-Database-Transaction) +# Next: [Transaction](/ENG/ENG-08-2-Database-Transaction) diff --git a/ENG/ENG-08-2-Database-Transaction.md b/ENG/ENG-08-2-Database-Transaction.md index 381ca8e..6112d6a 100644 --- a/ENG/ENG-08-2-Database-Transaction.md +++ b/ENG/ENG-08-2-Database-Transaction.md @@ -1,4 +1,4 @@ -##### Other languages: [简体中文](/drogon-docs/#/CHN/CHN-08-2-数据库-事务) +##### Other languages: [简体中文](/CHN/CHN-08-2-数据库-事务) > **Transactions** are an important feature of relational databases, and Drogon provides transaction support with the `Transaction` class. @@ -83,4 +83,4 @@ For the simplest example, suppose there is a task table from which the user sele In this case, select for update is used to avoid concurrent modifications. The update statement is completed in the result callback of the select statement. The outermost braces are used to limit the scope of the transPtr so that it can be destroyed in time after the execution of sql to end the transaction. -# Next: [ORM](/drogon-docs/#/ENG/ENG-08-3-Database-ORM) +# Next: [ORM](/ENG/ENG-08-3-Database-ORM) diff --git a/ENG/ENG-08-3-Database-ORM.md b/ENG/ENG-08-3-Database-ORM.md index 6f34fb4..d299a1b 100644 --- a/ENG/ENG-08-3-Database-ORM.md +++ b/ENG/ENG-08-3-Database-ORM.md @@ -1,4 +1,4 @@ -##### Other languages: [简体中文](/drogon-docs/#/CHN/CHN-08-3-数据库-ORM) +##### Other languages: [简体中文](/CHN/CHN-08-3-数据库-ORM) ### Model @@ -286,4 +286,4 @@ drogon_ctl can also generate restful-style controllers for each model (or table) It should be noted that the controller of each table is designed to be composed of a base class and a subclass. Among them, the base class and the table are closely related, and the subclass is used to implement special business logic or modify the interface format. The advantage of this design is that when the table structure changes, users can update only the base class without overwriting the subclass(by setting the `generate_base_only` option to `true`). -# Next: [FastDbClient](/drogon-docs/#/ENG/ENG-08-4-Database-FastDbClient) +# Next: [FastDbClient](/ENG/ENG-08-4-Database-FastDbClient) diff --git a/ENG/ENG-08-4-Database-FastDbClient.md b/ENG/ENG-08-4-Database-FastDbClient.md index fdb59f2..85265a0 100644 --- a/ENG/ENG-08-4-Database-FastDbClient.md +++ b/ENG/ENG-08-4-Database-FastDbClient.md @@ -1,4 +1,4 @@ -##### Other languages: [简体中文](/drogon-docs/#/CHN/CHN-08-4-数据库-FastDbClient) +##### Other languages: [简体中文](/CHN/CHN-08-4-数据库-FastDbClient) As the name implies, FastDbClient will provide higher performance than the normal DbClient. Unlike DbClient has own event loop, it shares the event loop with network IO threads and the main thread of the web application, which makes the internal implementation of FastDbClient available in a lock-free mode and more efficient. @@ -30,4 +30,4 @@ The use of FastDbClient is almost identical to that of the normal DbClient, exce - Synchronous transaction creation interfaces are likely to block (when all connections are busy), so FastDbClient's synchronous transaction creation interface returns null pointers directly. If you want to use transactions on FastDbClient, please use the asynchronous transaction creation interface. - After using the FastDbClient to create an Orm Mapper object, you should also use only asynchronous non-blocking interfaces of the mapper object. -# Next: [Automatic batch mode](/drogon-docs/#/ENG/ENG-08-5-Database-auto_batch) +# Next: [Automatic batch mode](/ENG/ENG-08-5-Database-auto_batch) diff --git a/ENG/ENG-08-5-Database-auto_batch.md b/ENG/ENG-08-5-Database-auto_batch.md index 6d7ccc9..8060ccf 100644 --- a/ENG/ENG-08-5-Database-auto_batch.md +++ b/ENG/ENG-08-5-Database-auto_batch.md @@ -1,4 +1,4 @@ -##### Other languages: [简体中文](/drogon-docs/#/CHN/CHN-08-5-数据库-自动批处理) +##### Other languages: [简体中文](/CHN/CHN-08-5-数据库-自动批处理) The automatic batch mode is only valid for the client library of postgresql 14+ version, and will be ignored in other cases. Before talking about automatic batch processing, let's understand the pipeline mode first. @@ -33,4 +33,4 @@ Therefore, automatic batch mode is helpful to improve performance, but it is not When using the newPgClient interface to create a client, set the third parameter to true to enable automatic batch mode; When using a configuration file to create a client, set the auto_batch option to true to enable automatic batch mode for the client; -# Next: [Request References](/drogon-docs/#/ENG/ENG-09-0-References-request) +# Next: [Request References](/ENG/ENG-09-0-References-request) diff --git a/ENG/ENG-09-0-References-request.md b/ENG/ENG-09-0-References-request.md index c77cd9c..c7c8ac1 100644 --- a/ENG/ENG-09-0-References-request.md +++ b/ENG/ENG-09-0-References-request.md @@ -267,4 +267,4 @@ void mycontroller::postfile(const HttpRequestPtr &req, std::function