#!/usr/bin/env python

import sqlalchemy
from turboentity import *
from turboentity import objectstore

metadata = sqlalchemy.BoundMetaData("sqlite:///:memory:")

class Person (Entity):
    class turboentity:
        tablename = "some_human_lifeform"
        order_by = "name"

    name = Column(Unicode(30))
    father = ManyToOne("Person")
    children = OneToMany("Person")

def main():
    create_all()

    grampa = Person(name="Abe")
    homer = Person(name="Homer")
    bart = Person(name="Bart")
    lisa = Person(name="Lisa")

    grampa.children.append(homer)
    homer.children.append(bart)
    lisa.father = homer

    objectstore.flush()
    objectstore.clear()

    p = Person.get_by(name="Homer")
    print "%s is %s's child." % (p.name, p.father.name)
    print "His children are %s." % (
            " and ".join(c.name for c in p.children))


if __name__ == '__main__':
    main()

