use Red::Driver::Cache;
use Red::AST::Insert;

unit role Red::Driver::CacheInvalidateOnWrite;

method driver { ... }

#multi method invalidate(Str :$table!) { ... }

multi method invalidate(Str :$table!, *%columns where .elems > 0) {
    self.invalidate: :$table
}

multi method prepare(Red::AST::Insert $ast ) {
    ENTER self.invalidate: :table($ast.into.^table), |$ast.values;
    $.driver.prepare: $ast
}