v1 API problems
$config
only one at a time due to static setting- Options and configurations a mess -
$config
file,$opts
in constructor and working db/collection via constructor. - Overly verbose
getTripodTables()
instead oftables
- Inconsistent - for example table API has
$SpecId
as first param, whereas in views API it is the last param - Not namespaced
Setup:
<?php
// v1 - today
MongoTripodConfig::setConfig($config); // one set of config per php script :-(
$tripod = new MongoTripod(
"CBD_users", // we specify a CBD collection, even if we're only going to work with views or tables?
"my_db", // only work with one db at a time
$opts // things like read preference etc. Could be in $config.
);
// v2 - the future?
$tripod = \tripod\Factory::getInstance(
'\tripod\MongoTripod', // define the implementation. This one is Mongo
$config // This allows you to create multiple instances with different config in the same script. Yay!
); // returns a \tripod\ITripod
Working with with CBDs:
<?php
// v1 - today
$tripod->graph($query,$properties);
$tripod->describeResource("foo:bar");
$tripod->describeResource("foo:bar","some:context");
$tripod->describeResources(["foo:bar","bar:baz"])
$tripod->select($query,$fields,$limit,$offset);
// v2 - longhand
$tripod->db("my_db")->cbd("CBD_users")->filter($query);
$tripod->db("my_db")->cbd("CBD_users")->describe("foo:bar");
$tripod->db("my_db")->cbd("CBD_users")->context("some:context")->describe("foo:bar");
$tripod->db("my_db")->cbd("CBD_users")->describe(["foo:bar","bar:baz"]);
$tripod->db("my_db")->cbd("CBD_users")->select($fields)->filter($query)->limit($limit)->skip($skip);
// longhand with auto-prefixing
$tripod->db("my_db")->cbd("users")->describe("foo:bar"); // if your cbd string doesn't start CBD_ we just append it
// shorter
$tripod->cbd("my_db:users")->filter($query);
$tripod->cbd('my_db:users')->describe('foo:bar'); // if your cbd string doesn't start CBD_ we just append it
$tripod->cbd('my_db:users')->describe('foo:bar@some:context'); // @ denotes context, if omitted we use default context
$tripod->cbd('my_db:users')->describe(['foo:bar','bar:baz']);
$tripod->cbd('my_db:users')->select($fields)->filter($query)->limit($limit)->skip($skip);
// shortest
$tripod->cbd("my_db:users")->filter($query); // bah
$tripod->describe('my_db:users[foo:bar]');
$tripod->describe('my_db:users[foo:bar@some:context]');
$tripod->describe('my_db:users[[foo:bar,bar:baz]]');
$tripod->select('my_db:users[[field1,field2]]')->filter($query)->limit($limit)->skip($skip);
Working with tables
<?php
// v1 - today
$tripod->getTripodTables()->distinct('t_user_lists','foo');
// v2 - longhand
$tripod->db("my_db")->tables("t_user_lists")->distinct("foo")
// shorter
$tripod->tables('my_db:user_lists')->describe('foo:bar'); // we prefix the t_ for you
// shortest
$tripod->distinct('my_db:user_lists[foo]');
Working with views
<?php
// v1 - today
$tripod->getTripodViews()->getViewForResource('foo:bar','v_drafts');
// v2 - longhand
$tripod->db("my_db")->views("v_drafts")->describe("foo:bar") // a view get is just a multi describe with WHERE in SPARQL...
// shorter
$tripod->views('my_db:drafts')->describe('foo:bar'); // we prefix the v_ for you
// shortest
$tripod->describe('my_db:drafts[foo:bar]');