Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
75 commits
Select commit Hold shift + click to select a range
5419ee2
Refactored mongo select to use a static array instead of a list
ermiry Jan 14, 2021
7bde423
Updated includes to use cmongo export qualifiers
ermiry Jan 14, 2021
eff4238
Added test header with check macro definitions
ermiry Jan 14, 2021
34dfd1a
Added base cmongo select unit tests
ermiry Jan 14, 2021
7e640df
Refactored makefile to compile tests and handle coverage
ermiry Jan 14, 2021
790655c
Added base codecov configuration
ermiry Jan 14, 2021
21821cb
Added dedicated version file
ermiry Jan 14, 2021
03a3da6
Added version match check test
ermiry Jan 14, 2021
b2c7dda
Added dedicated script to run tests
ermiry Jan 14, 2021
8ffcd40
Added coverage to .gitignore
ermiry Jan 14, 2021
53c5a20
Added dedicated script to build sources
ermiry Jan 14, 2021
7c0e06a
Added dedicated script to build & generate coverage reports
ermiry Jan 14, 2021
9536aca
Added base documentation files
ermiry Jan 14, 2021
8ddd73a
Added workflow to push documentation to wiki
ermiry Jan 14, 2021
f8dc33a
Added workflow to handle coverage reports
ermiry Jan 14, 2021
a9703ac
Added workflows to create beta & production releases
ermiry Jan 14, 2021
1ade178
Added dedicated script to compile production like sources
ermiry Jan 14, 2021
1915203
Added dedicated workflow to test version check
ermiry Jan 14, 2021
d4a35ab
Updated version to beta 1.0b-1
ermiry Jan 14, 2021
b56cde6
Updated coverage and version workflows to use mongo image
ermiry Jan 14, 2021
97a0ecd
Removed dependencies step for version workflow
ermiry Jan 14, 2021
5ac13f7
Added custom mongo structure to hold values
ermiry Mar 2, 2021
992c7f3
Updated main methods to use new structure
ermiry Mar 2, 2021
3536c6b
Added base dedicated model structure & methods
ermiry Mar 2, 2021
c298af3
Made main mongo structure accessible from all sources
ermiry Mar 2, 2021
4947bcf
Updated mongo find all methods to use model
ermiry Mar 2, 2021
af644b9
Refactored update & delete methods to be thread safe
ermiry Mar 2, 2021
8181d04
Split mongo_count_docs () to be used by other methods
ermiry Mar 2, 2021
efc10dd
Updated find one methods to use new model structure
ermiry Mar 2, 2021
9f8cdd1
Removed mongo_collection_get () wrapper method
ermiry Mar 2, 2021
e5347f2
Added missing cmongo_model_set_parser () export
ermiry Mar 2, 2021
44a2e48
Added base client pools example
ermiry Mar 2, 2021
08db54e
Updated version to beta 1.0b-2
ermiry Mar 2, 2021
175579b
Added missing mongo_get_status () export
ermiry Mar 15, 2021
acf8be7
Added buffer size definition in types header
ermiry Mar 15, 2021
74fd2aa
Added find methods that return result as json
ermiry Mar 15, 2021
66683cf
Updated version to beta 1.0b-3
ermiry Mar 15, 2021
1e1c7b9
Added methods to perform aggregations
ermiry Mar 27, 2021
19fe5da
Added custom method to populate an object's array
ermiry Mar 27, 2021
c1bfa94
Updated version to beta 1.0b-4
ermiry Mar 27, 2021
1c3f135
Added base mongo_find_one_populate_object ()
ermiry Mar 28, 2021
ebd6287
Added mongo_find_one_populate_object_to_json ()
ermiry Mar 28, 2021
902ee53
Fixed pipeline bson memory leak in find one populate
ermiry Mar 28, 2021
7838dc0
Renamed mongo_find_one_populate_array_to_json ()
ermiry Mar 28, 2021
a03fcf6
Added new mongo_find_one_populate_array ()
ermiry Mar 28, 2021
22915e9
Added mongo_find_one_populate_array_to_json ()
ermiry Mar 28, 2021
70e4156
Refactored compilation flags in makefile
ermiry Mar 31, 2021
7cf7082
Added base model unit tests methods
ermiry Mar 31, 2021
74af30f
Handling model tests in dedicated test script
ermiry Mar 31, 2021
08560df
Added workflow to compile & run tests
ermiry Mar 31, 2021
2e86f12
Updated version to beta 1.0b-5
ermiry Mar 31, 2021
7004f77
Added mongo_perform_aggregation_to_json ()
ermiry Apr 1, 2021
c6284c4
Updated version to beta 1.0b-6
ermiry Apr 1, 2021
688814c
Added methods to print oids & documents
ermiry Apr 3, 2021
064bbd0
Added mongo_perform_single_aggregation_to_json ()
ermiry Apr 6, 2021
776a54e
Updated version to beta 1.0b-7
ermiry Apr 6, 2021
2a3b4cc
Refactored mongo_find_one_custom_populate_array_to_json ()
ermiry Apr 6, 2021
30ed2ca
Added mongo_find_all_populate_object_to_json ()
ermiry Apr 12, 2021
500b3a5
Added mongo_find_all_populate_array_to_json ()
ermiry Apr 12, 2021
a546732
Updated version to beta 1.0b-8
ermiry Apr 12, 2021
7ec547a
Added missing mongo_find_all_populate_array_to_json export
ermiry Apr 12, 2021
67859cb
Changed mongo_find_all_internal () to be private
ermiry Apr 12, 2021
227b74f
Refactored mongo_find_all_to_json () return value
ermiry Apr 12, 2021
5a5a7d7
Refactored mongo_find_all methods organization
ermiry Apr 12, 2021
d34272a
Updated version to beta 1.0b-9
ermiry Apr 12, 2021
aca8481
Added mongo_find_one_populate_array_with_object_to_json ()
ermiry Apr 18, 2021
b63844a
Updated version to beta 1.0b-10
ermiry Apr 18, 2021
bff7d0a
Added extra array name when populating array with object
ermiry Apr 18, 2021
82b9c84
Updated version to beta 1.0b-11
ermiry Apr 18, 2021
f000658
Added mongo_perform_single_aggregation ()
ermiry Apr 20, 2021
be55061
Updated version to beta 1.0b-12
ermiry Apr 20, 2021
855ee40
Refactored mongo_count_docs_internal ()
ermiry Jun 6, 2021
5cb88ef
Removed bson_copy (query) in find all methods
ermiry Jun 6, 2021
6e9513e
Refactored crud methods to print errors in dev
ermiry Jun 6, 2021
5e31af2
Updated version to beta 1.0b-13
ermiry Jun 19, 2021
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 20 additions & 0 deletions .codecov.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
codecov:
require_ci_to_pass: yes

coverage:
precision: 2
round: down
range: "70...100"

parsers:
gcov:
branch_detection:
conditional: yes
loop: yes
method: no
macro: no

comment:
layout: "reach,diff,flags,files,footer"
behavior: default
require_changes: no
20 changes: 20 additions & 0 deletions .github/workflows/docs.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
name: CMongo Documentation

on:
push:
branches:
- 'main'

jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout reposistory
uses: actions/checkout@v2

- name: Upload Documentation to Wiki
uses: SwiftDocOrg/github-wiki-publish-action@v1
with:
path: "docs"
env:
GH_PERSONAL_ACCESS_TOKEN: ${{ secrets.GITHUB_TOKEN }}
39 changes: 39 additions & 0 deletions .github/workflows/pre-release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
name: CMongo Pre-Release

on:
push:
branches:
- '*beta'

jobs:
build:
name: Create Pre-Release
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v2

- name: Read version file
id: get_version
run: echo "::set-output name=version::$(cat version.txt)"

- name: Read changelog
id: get_changes
run: |
changes=$(cat CHANGELOG.md)
changes="${changes//'%'/'%25'}"
changes="${changes//$'\n'/'%0A'}"
changes="${changes//$'\r'/'%0D'}"
echo "::set-output name=changes::$changes"

- name: Create Pre-Release
id: create_release
uses: actions/create-release@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
tag_name: ${{ steps.get_version.outputs.version }}
release_name: Beta ${{ steps.get_version.outputs.version }}
body: ${{ steps.get_changes.outputs.changes }}
draft: false
prerelease: true
39 changes: 39 additions & 0 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
name: CMongo Release

on:
push:
branches:
- 'main'

jobs:
build:
name: Create Release
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v2

- name: Read version file
id: get_version
run: echo "::set-output name=version::$(cat version.txt)"

- name: Read changelog
id: get_changes
run: |
changes=$(cat CHANGELOG.md)
changes="${changes//'%'/'%25'}"
changes="${changes//$'\n'/'%0A'}"
changes="${changes//$'\r'/'%0D'}"
echo "::set-output name=changes::$changes"

- name: Create Release
id: create_release
uses: actions/create-release@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
tag_name: ${{ steps.get_version.outputs.version }}
release_name: Release ${{ steps.get_version.outputs.version }}
body: ${{ steps.get_changes.outputs.changes }}
draft: false
prerelease: false
39 changes: 39 additions & 0 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
name: CMongo Tests

on:
pull_request:
branches:
- '*'

jobs:
coverage:
name: CMongo tests
runs-on: ubuntu-latest
container:
image: ermiry/mongoc:buildev
steps:
- name: Checkout
uses: actions/checkout@v2

# compile
- name: Compile Sources
run: make TYPE=test COVERAGE=1
- name: Compile Tests
run: make TYPE=test COVERAGE=1 test

# run
- name: Unit Tests
run: bash test/run.sh

- name: Coverage
run: make coverage

- name: Upload coverage to Codecov
uses: codecov/codecov-action@v1
with:
token: ${{ secrets.CODECOV_TOKEN }}
directory: ./coverage/
flags: unittests
name: build
fail_ci_if_error: true
# verbose: true
29 changes: 29 additions & 0 deletions .github/workflows/version.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
name: CMongo Version Check

on:
push:
branches:
- '*beta'
- 'main'
pull_request:
branches:
- '*beta'
- 'main'

jobs:
build:
name: CMongo build
runs-on: ubuntu-latest
container:
image: ermiry/mongoc:buildev
steps:
- name: Checkout code
uses: actions/checkout@v2

- name: gcc make
run: make
- name: gcc tests
run: make test

- name: Check version
run: LD_LIBRARY_PATH=bin ./test/bin/version
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@
bin
objs

coverage

keys

data
Expand Down
3 changes: 3 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
- Refactored mongo_count_docs_internal ()
- Removed bson_copy (query) in find all methods
- Refactored crud methods to print errors in dev
10 changes: 10 additions & 0 deletions build.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
#!/bin/bash

# ensure a clean build
make clean

# gcc
printf "gcc make\n\n"
make -j8
printf "\n\ngcc test\n\n"
make test -j8
15 changes: 15 additions & 0 deletions coverage.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
#!/bin/bash

# ensure a clean build
make clean

# gcc
printf "gcc make\n\n"
make TYPE=test -j8
printf "\n\ngcc test\n\n"
make TYPE=test test -j8

# run
bash test/run.sh

make coverage
1 change: 1 addition & 0 deletions docs/Home.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Welcome to the cmongo wiki!
1 change: 1 addition & 0 deletions docs/_Footer.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Ermiry - Never Stop Creating
99 changes: 99 additions & 0 deletions examples/pool.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,99 @@
#include <stdio.h>

#include <pthread.h>

#include <mongoc/mongoc.h>

static pthread_mutex_t mutex;
static bool in_shutdown = false;

static void *worker (void *data) {

mongoc_client_pool_t *pool = data;
mongoc_client_t *client;
bson_t ping = BSON_INITIALIZER;
bson_error_t error;
bool r;

BSON_APPEND_INT32 (&ping, "ping", 1);

while (true) {
client = mongoc_client_pool_pop (pool);

r = mongoc_client_command_simple (
client, "admin", &ping, NULL, NULL, &error
);

if (!r) {
fprintf (stderr, "%s\n", error.message);
}

mongoc_client_pool_push (pool, client);

pthread_mutex_lock (&mutex);
if (in_shutdown || !r) {
pthread_mutex_unlock (&mutex);
break;
}

pthread_mutex_unlock (&mutex);
}

bson_destroy (&ping);
return NULL;

}

int main (int argc, char **argv) {

const char *uri_string = "mongodb://127.0.0.1/?appname=pool-example";
mongoc_uri_t *uri;
bson_error_t error;
mongoc_client_pool_t *pool;
pthread_t threads[10];
unsigned i;
void *ret;

pthread_mutex_init (&mutex, NULL);
mongoc_init ();

if (argc > 1) {
uri_string = argv[1];
}

uri = mongoc_uri_new_with_error (uri_string, &error);
if (!uri) {
fprintf (stderr,
"failed to parse URI: %s\n"
"error message: %s\n",
uri_string,
error.message
);

return EXIT_FAILURE;
}

pool = mongoc_client_pool_new (uri);
mongoc_client_pool_set_error_api (pool, 2);

for (i = 0; i < 10; i++) {
pthread_create (&threads[i], NULL, worker, pool);
}

sleep (10);
pthread_mutex_lock (&mutex);
in_shutdown = true;
pthread_mutex_unlock (&mutex);

for (i = 0; i < 10; i++) {
pthread_join (threads[i], &ret);
}

mongoc_client_pool_destroy (pool);
mongoc_uri_destroy (uri);

mongoc_cleanup ();

return EXIT_SUCCESS;

}
9 changes: 3 additions & 6 deletions include/cmongo/collections.h
Original file line number Diff line number Diff line change
Expand Up @@ -3,18 +3,15 @@

#include <mongoc/mongoc.h>

#include "cmongo/mongo.h"

#ifdef __cplusplus
extern "C" {
#endif

// opens handle to a mongo collection in the db
extern mongoc_collection_t *mongo_collection_get (
const char *coll_name
);

// drops a collection deleting all of its data
// retuns 0 on success, 1 on error
extern int mongo_collection_drop (
CMONGO_EXPORT int mongo_collection_drop (
mongoc_collection_t *collection
);

Expand Down
Loading