def cf_prop_val_mapkey_completer()

in cqlsh-expansion/pylib/cqlshlib/cql3handling.py [0:0]


def cf_prop_val_mapkey_completer(ctxt, cass):
    optname = ctxt.get_binding('propname')[-1]
    for cql3option, _, subopts in CqlRuleSet.columnfamily_layout_map_options:
        if optname == cql3option:
            break
    else:
        return ()
    keysseen = map(dequote_value, ctxt.get_binding('propmapkey', ()))
    valsseen = map(dequote_value, ctxt.get_binding('propmapval', ()))
    pairsseen = dict(zip(keysseen, valsseen))
    if optname == 'compression':
        return map(escape_value, set(subopts).difference(keysseen))
    if optname == 'caching':
        return map(escape_value, set(subopts).difference(keysseen))
    if optname == 'compaction':
        opts = set(subopts)
        try:
            csc = pairsseen['class']
        except KeyError:
            return ["'class'"]
        csc = csc.split('.')[-1]
        if csc == 'SizeTieredCompactionStrategy':
            opts.add('min_sstable_size')
            opts.add('min_threshold')
            opts.add('bucket_high')
            opts.add('bucket_low')
        elif csc == 'LeveledCompactionStrategy':
            opts.add('sstable_size_in_mb')
            opts.add('fanout_size')
        elif csc == 'DateTieredCompactionStrategy':
            opts.add('base_time_seconds')
            opts.add('max_sstable_age_days')
            opts.add('min_threshold')
            opts.add('max_window_size_seconds')
            opts.add('timestamp_resolution')
        elif csc == 'TimeWindowCompactionStrategy':
            opts.add('compaction_window_unit')
            opts.add('compaction_window_size')
            opts.add('min_threshold')
            opts.add('max_threshold')
            opts.add('timestamp_resolution')

        return map(escape_value, opts)
    return ()