From c9eb7292b8ec9c60bbf68641a0d021310e7e03d6 Mon Sep 17 00:00:00 2001 From: retoor Date: Fri, 22 Nov 2024 14:56:40 +0100 Subject: [PATCH] Updated readme --- README.md | 28 ++++++++++++++++++++++------ 1 file changed, 22 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index bf4f05d..5117a2c 100644 --- a/README.md +++ b/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`. - `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 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. 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 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`