private _buildODataFilter()

in sdk/webpubsub-socketio-extension/src/SIO/components/web-pubsub-adapter.ts [365:393]


  private _buildODataFilter(rooms: Set<string>, excepts?: Set<string> | undefined): string {
    debug("_buildODataFilter");
    let allowFilter = "";
    let room_idx = 0,
      except_idx = 0;

    if (rooms.size === 0) rooms = new Set([""]);
    for (const room of rooms) {
      const groupName = this._getGroupName(this.nsp.name, room);
      allowFilter += `'${groupName}' in groups` + (room_idx === rooms.size - 1 ? "" : " or ");
      room_idx++;
    }

    let denyFilter = "";
    if (excepts) {
      for (const except of excepts) {
        const exceptGroupName = this._getGroupName(this.nsp.name, except);
        denyFilter += `not ('${exceptGroupName}' in groups)` + (except_idx === excepts.size - 1 ? "" : " and ");
        except_idx++;
      }
    }

    let result = "";
    if (allowFilter.length > 0) {
      result = allowFilter + (denyFilter.length > 0 ? " and " + denyFilter : "");
    } else result = denyFilter.length > 0 ? `${denyFilter}` : "";
    debug(`_buildODataFilter result = ${result}`);
    return result;
  }