summaryrefslogtreecommitdiff
path: root/pynslcd/netgroup.py
diff options
context:
space:
mode:
Diffstat (limited to 'pynslcd/netgroup.py')
-rw-r--r--pynslcd/netgroup.py21
1 files changed, 16 insertions, 5 deletions
diff --git a/pynslcd/netgroup.py b/pynslcd/netgroup.py
index 7be2936..1de60bf 100644
--- a/pynslcd/netgroup.py
+++ b/pynslcd/netgroup.py
@@ -43,13 +43,24 @@ class Search(search.LDAPSearch):
class Cache(cache.Cache):
+ tables = ('netgroup_cache', 'netgroup_triple_cache', 'netgroup_member_cache')
+
create_sql = '''
- -- FIXME: this does not work as entries are never removed from the cache
CREATE TABLE IF NOT EXISTS `netgroup_cache`
- ( `cn` TEXT NOT NULL,
- `member` TEXT NOT NULL,
- `mtime` TIMESTAMP NOT NULL,
- UNIQUE (`cn`, `member`) );
+ ( `cn` TEXT PRIMARY KEY COLLATE NOCASE,
+ `mtime` TIMESTAMP NOT NULL );
+ CREATE TABLE IF NOT EXISTS `netgroup_triple_cache`
+ ( `netgroup` TEXT NOT NULL COLLATE NOCASE,
+ `nisNetgroupTriple` TEXT NOT NULL COLLATE NOCASE,
+ FOREIGN KEY(`netgroup`) REFERENCES `netgroup_cache`(`cn`)
+ ON DELETE CASCADE ON UPDATE CASCADE );
+ CREATE INDEX IF NOT EXISTS `netgroup_triple_idx` ON `netgroup_triple_cache`(`netgroup`);
+ CREATE TABLE IF NOT EXISTS `netgroup_member_cache`
+ ( `netgroup` TEXT NOT NULL COLLATE NOCASE,
+ `memberNisNetgroup` TEXT NOT NULL,
+ FOREIGN KEY(`netgroup`) REFERENCES `netgroup_cache`(`cn`)
+ ON DELETE CASCADE ON UPDATE CASCADE );
+ CREATE INDEX IF NOT EXISTS `netgroup_membe_idx` ON `netgroup_member_cache`(`netgroup`);
'''