SQLite Runtime Extension
MergeStat Lite can also be used as a SQLite run-time loadable extension. This is a powerful way to use MergeStat in any environment that supports SQLite and run-time extensions, including many programming languages.
Usage
You'll need to have access to libmergestat.so
, the shared object file that is the run-time loadable extension.
You can find it as part of our published releases, or if you're building from source, it will be located at .build/libmergestat.so
.
SQLite Shell sqlite3
The SQLite shell allows you to load an extension with the .load
command.
sqlite> .load .build/libmergestat.so
sqlite> select count(*) from commits('https://github.com/mergestat/mergestat');
749
Node.js
node-sqlite3
supports loading an extension.
var sqlite3 = require('sqlite3').verbose();
var db = new sqlite3.Database(':memory:');
// load the extension from a local path
db.loadExtension('libmergestat.so', (err) => {
if (err) {
console.error(err)
return
}
db.each("SELECT * FROM commits('https://github.com/mergestat/mergestat')", (err, row) => {
console.log(row);
/*
prints out all commits looking like:
{
hash: 'a4562d2d5a35536771745b0aa19d705eb47234e7',
message: 'initial commit :tada:\n',
author_name: 'Patrick DeVivo',
author_email: 'patrick.devivo@gmail.com',
author_when: '2020-07-03T15:59:58-04:00',
committer_name: 'Patrick DeVivo',
committer_email: 'patrick.devivo@gmail.com',
committer_when: '2020-07-03T15:59:58-04:00',
parents: 0
}
*/
})
})
db.close();
Python
import sqlite3
con = sqlite3.connect(":memory:")
con.enable_load_extension(True)
con.execute(f"select load_extension('./libmergestat')")
con.enable_load_extension(False)
for row in con.cursor().execute("SELECT * FROM commits('https://github.com/mergestat/mergestat')"):
print(row)