This commit is contained in:
parent
ed5d6cb297
commit
c9eb7292b8
28
README.md
28
README.md
@ -10,17 +10,33 @@ Examples of common used functions are:
|
|||||||
- `sormq(int conn, char *sql, ...)` execute query. Variadic arguments. Works like `printf`. Returns result in CSV format in case of `SELECT`.
|
- `sormq(int conn, char *sql, ...)` execute query. Variadic arguments. Works like `printf`. Returns result in CSV format in case of `SELECT`.
|
||||||
- `sorm_csvd(char *csv_data)` dumps your CSV result data to a nice fixed content width table in the terminal.
|
- `sorm_csvd(char *csv_data)` dumps your CSV result data to a nice fixed content width table in the terminal.
|
||||||
|
|
||||||
## CAUTION
|
|
||||||
This project won't compile on your local PC because `rlib.h` is missing. This is my bundle of libraries that I regularely use. I will add this later as 3rd party lib. Maybe I will cherry pick only the functions that SORM uses out of it to keep the source clean, else I will have thousands of lines nothing to do with this project in the source.
|
|
||||||
|
|
||||||
## Thread safety
|
|
||||||
I wonder if I have configured sqlite3 the right way for thread safety. It maybe requires a manual compilation of the shared object file. Will look into that. SORM is written with thread safety in mind.
|
|
||||||
|
|
||||||
## Design choices
|
## Design choices
|
||||||
I use mainly native types and not custom structs. For example, the db parameter is an int. This is so it can easily communicate with other languages using a shared object file.
|
I use mainly native types and not custom structs. For example, the db parameter is an int. This is so it can easily communicate with other languages using a shared object file.
|
||||||
Same argument is for the result set of `sormq` (the query function) resulting in a `char *` containing CSV data.
|
Same argument is for the result set of `sormq` (the query function) resulting in a `char *` containing CSV data.
|
||||||
While the performance is nice, it's not written with performance in mind at all.
|
While the performance is nice, it's not written with performance in mind at all.
|
||||||
|
|
||||||
|
## Thread safety
|
||||||
|
I wonder if I have configured sqlite3 the right way for thread safety. It maybe requires a manual compilation of the shared object file. Will look into that. SORM is written with thread safety in mind.
|
||||||
|
|
||||||
|
## Building
|
||||||
|
|
||||||
|
It has only one build command for the shared object file and the REPL/CLI.
|
||||||
|
It has not been compiled with optimizations / warnings enabled. Don't recommend for now.
|
||||||
|
```bash
|
||||||
|
make build
|
||||||
|
```
|
||||||
|
### Requirements
|
||||||
|
This project has the following dependencies:
|
||||||
|
- sqlite3-dev (`apt install sqlite3-dev`)
|
||||||
|
- readline(-dev?) (no idea how to install)
|
||||||
|
- gcc
|
||||||
|
- make
|
||||||
|
It probably works from C99 to C2X.
|
||||||
|
|
||||||
|
### Caution
|
||||||
|
This project won't compile on your local PC because `rlib.h` is missing. This is my bundle of libraries that I regularely use. I will add this later as 3rd party lib. Maybe I will cherry pick only the functions that SORM uses out of it to keep the source clean, else I will have thousands of lines nothing to do with this project in the source.
|
||||||
|
|
||||||
|
|
||||||
## Python support
|
## Python support
|
||||||
The Python library is low quality. I made it just for fun and test. This is not a defitive version. But it show very well how to communicate with a shared object file. I'm sure someone will be happy with examples how to use variadic functions trough Python to C. See `sorm.py`
|
The Python library is low quality. I made it just for fun and test. This is not a defitive version. But it show very well how to communicate with a shared object file. I'm sure someone will be happy with examples how to use variadic functions trough Python to C. See `sorm.py`
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user