public function update_bit(string $id, array $cfg, $merge_config = false): ?int
  {
    if ( \bbn\str::is_uid($id) ){
      $c = $this->class_cfg['arch']['user_options_bits'];
      $fields = array_values($c);
      if ( \array_key_exists($c['id'], $cfg) ){
        unset($cfg[$c['id']]);
      }
      $to_cfg = $this->get_bit_cfg(null, $cfg);
      if ( isset($to_cfg['items']) ){
        unset($to_cfg['items']);
      }
      if ( !empty($to_cfg) ){
        if ( !empty($merge_config) && !empty($cfg[$c['cfg']]) ){
          if (  \bbn\str::is_json($cfg[$c['cfg']]) ){
            $cfg[$c['cfg']] = json_decode($cfg[$c['cfg']], true);
          }
          if ( \is_array($cfg[$c['cfg']]) ){
            $cfg[$c['cfg']] = array_merge($cfg[$c['cfg']], $to_cfg);
          }
          else {
            $cfg[$c['cfg']] = $to_cfg;
          }
        }
        else {
          $cfg[$c['cfg']] = $to_cfg;
        }
        $cfg[$c['cfg']] = json_encode($cfg[$c['cfg']]);
      }
      return $this->db->update($this->class_cfg['tables']['user_options_bits'], [
        $c['id_parent'] => $cfg[$c['id_parent']] ?? NULL,
        $c['id_option'] => $cfg[$c['id_option']] ?? NULL,
        $c['num'] => $cfg[$c['num']] ?? NULL,
        $c['text'] => $cfg[$c['text']] ?? '',
        $c['cfg'] => $cfg[$c['cfg']] ?? '',
      ], [
        $c['id'] => $id
      ]);
    }
    return null;
  }