~free.ekanayaka/storm/any-expr

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
- The on_remote flag of references should be infered when the
  local property is a primary key (or part of it?).

- Unicode(autoreload=True) will mark the field as autoreload by default.

- Generic finds:

  foo, count = store.find((Foo, Count(Foo.name))).group_by(Foo.name)
  foo_name, count = store.find((Foo.name, Count(Foo.name))).group_by(Foo.name)

- Lazy-by-default attributes:

  class C(object):
      ...
      attr = Unicode(lazy=True)

  This would make attr be loaded only if touched.

  Or maybe lazy groups:

  class C(object):
      ...
      lazy_group = LazyGroup()
      attr = Unicode(lazy=True, lazy_group=lazy_group)

  Once one of the group attributes are accessed all of them are retrieved
  at the same time.

  Lazy groups may be integers as well:

  class C(object):
      ...
      attr = Unicode(lazy_group=1)

  lazy_group=None means not lazy.

- ReferenceSet.__contains__

- Implement ResultSet.reverse[d]() to invert order_by()?

- Add support to cyclic references when all of elements of the cycle are
  flushed at the same time.

- Implement support for negative caches to tell when an object
  isn't available.

- Implement support for complex removes and updates with Exists().

- Log SQL statements and Store actions.

- Support for quoted strings.

- Option to keep object in cache until explicitly removed?

- Implement store.copy()

- Implement must_define in properties.

- Implement slicing ([:]) in BoundReferenceSet

- Handle $foo$bar$foo$ literals

- Could Reference(Set)s include a "where" clause? Readonly perhaps?

- Make the primary key for a class be optional. If it's not provided
  the object isn't cached and updates aren't tracked.

- Between()

- Automatic class generation, perhaps based on Django's inspectdb:

  http://www.djangoproject.com/documentation/legacy_databases/
  http://www.djangoproject.com/documentation/django_admin/

- Support allow_microseconds=False in DateTime properties/variables.

- Support allow_self in Reference and ReferenceSet, and default
  to false.