mirror of
https://github.com/rbock/sqlpp11.git
synced 2024-11-15 20:31:16 +08:00
71 lines
2.6 KiB
Markdown
71 lines
2.6 KiB
Markdown
|
If you want to help with the development of the library, you might want to consider one of these items:
|
||
|
|
||
|
# Better documentation
|
||
|
The documentation in the Wiki is incomplete and outdated. It is also not part of source control, which makes it a bit harder to contribute.
|
||
|
It might make sense to write a couple of markdown files here.
|
||
|
|
||
|
Throw in chapters of how to add features and how to write connector libraries.
|
||
|
|
||
|
## Better tests and examples
|
||
|
Many of the current tests were born when the library was in infant state. Often they test implementation details. And they often just print stuff, instead of checking said stuff.
|
||
|
|
||
|
# Connectors
|
||
|
## Merge stable connectors into sqlpp11
|
||
|
Having all connector libraries in place, makes maintenance considerably simpler, see #174.
|
||
|
It would also reduce the cognitive overhead for newcomers.
|
||
|
|
||
|
## New connectors
|
||
|
There are a couple of connector libraries already. Here are some that have been requested in the past
|
||
|
|
||
|
- Sybase
|
||
|
- Oracle
|
||
|
- SQL Server
|
||
|
- Google Spanner
|
||
|
|
||
|
## More special functions and types for connectors
|
||
|
GROUP CONCAT or JSON support for mysql, for instance
|
||
|
INSERT OR UPDATE for postgresl and mysql
|
||
|
INSERT INTO ... SELECT ... for postgresql
|
||
|
CREATE TABLE for all of them, including PPGEN
|
||
|
|
||
|
Exception types that carry more specific error information, e.g. the native error code, see #227
|
||
|
|
||
|
Find a way to handle column names that are keywords in the vendor's dialect, see #199
|
||
|
|
||
|
Handle specific data types, including JSON for the connectors.
|
||
|
|
||
|
More test cases for DDL files.
|
||
|
|
||
|
# EDSL features
|
||
|
Multi-line insert in prepared statements, see #68
|
||
|
|
||
|
## optional std::optional support
|
||
|
Instead of sqlpp::value_or_null, std::optional would be nice, see #238
|
||
|
|
||
|
## Converter to and from SQL to C++ structs, to allow for more ORM like code
|
||
|
struct A;
|
||
|
insert_into(tab).set(A{});
|
||
|
update(tab).set(A{});
|
||
|
for (const auto& a : db(select(A{}).from(tab).unconditionally()))
|
||
|
{
|
||
|
// ...
|
||
|
}
|
||
|
|
||
|
# Runtime improvements
|
||
|
## Connection pools and caching interface
|
||
|
In order to support high load scenarios,
|
||
|
- connection pools (to avoid creating and destroying connections)
|
||
|
- caching (hash the query and answer it from the cache for some time), see #86
|
||
|
|
||
|
## Async support
|
||
|
Obtain results in an asynchronous fashion, see #35, for instance.
|
||
|
|
||
|
# Compile time improvements
|
||
|
## Simplify code
|
||
|
See Seventeenification talk. Some of the simplifications can be ported back easily.
|
||
|
|
||
|
## Suppress export of symbols
|
||
|
Some compilers tend to export all the generated symbols, which is a bit annoying in case of template-heavy libraries like sqlpp11 (leads to larger files and longer compile/link/startup times, I believe).
|
||
|
There are ways to suppress this in most compilers, afaik.
|
||
|
|