This document describes DAOs and their relevance in Pipi
Copyright and Language can be found in RFC1
This document is governed by the Consensus-Oriented Specification System (COSS).
Abstract underlying details of data acquisition and manipulation so as to provide for an object with a straightforward interface capable of being used in situations requiring traversal and data access.
Data in Pipi is database-agnostic; meaning that data may reside on a file-system, in a relational database, in-memory or within any arbitrary storage model.
In Pipi, there are three layers of abstraction for any given database to make this possible.
node represents an element within a tree or graph and encapsulates functionality for manipulating said element.
DAO wraps a given
service, providing a CRUD interface with which a
node may interact with a given system.
Services represents required functionality at a level closest to a given system and encapsulates it within a flat hierarchy of functions.
import os def ls(path): return os.listdir(path)
DAO then uses functions related to its CRUD operation in order to provide a consistent interface for
node objects regardless of the underlying system.
Here is similar functionality as above, but for Autodesk Maya:
from maya import cmds def ls(path): return cmds.listRelatives(path)