public void Apply(CommandBuilder builder) { _left.Apply(builder); builder.Append(" % "); _right.Apply(builder); builder.Append(_op); _value.Apply(builder); }
public static string ToSql(this ISqlFragment fragment) { if (fragment == null) { return(null); } var cmd = new NpgsqlCommand(); var builder = new CommandBuilder(cmd); fragment.Apply(builder); return(builder.ToString().Trim()); }
public void ConfigureCommand(CommandBuilder builder, IMartenSession session) { var patchParam = builder.AddJsonParameter(_serializer.ToCleanJson(_patch)); if (_patch.TryGetValue("value", out var document)) { var value = PossiblyPolymorhpic ? _serializer.ToJsonWithTypes(document) : _serializer.ToJson(document); var copy = new Dictionary <string, object>(); foreach (var item in _patch) { copy.Add(item.Key, item.Value); } copy["value"] = VALUE_LOOKUP; var patchJson = _serializer.ToJson(copy); var replacedValue = patchJson.Replace($"\"{VALUE_LOOKUP}\"", value); patchParam = builder.AddJsonParameter(replacedValue); } var versionParam = builder.AddParameter(CombGuidIdGeneration.NewGuid(), NpgsqlDbType.Uuid); builder.Append("update "); builder.Append(_storage.TableName.QualifiedName); builder.Append(" as d set data = "); builder.Append(_transform.Identifier.QualifiedName); builder.Append("(data, :"); builder.Append(patchParam.ParameterName); builder.Append("), "); builder.Append(SchemaConstants.LastModifiedColumn); builder.Append(" = (now() at time zone 'utc'), "); builder.Append(SchemaConstants.VersionColumn); builder.Append(" = :"); builder.Append(versionParam.ParameterName); if (!_fragment.Contains("where")) { builder.Append(" where "); } else { builder.Append(" "); } _fragment.Apply(builder); applyUpdates(builder, _fragment); }
private void applyUpdates(CommandBuilder builder, ISqlFragment where) { var fields = _storage.DuplicatedFields; if (!fields.Any()) { return; } builder.Append(";update "); builder.Append(_storage.TableName.QualifiedName); builder.Append(" as d set "); builder.Append(fields[0].UpdateSqlFragment()); for (var i = 1; i < fields.Length; i++) { builder.Append(", "); builder.Append(fields[i].UpdateSqlFragment()); } builder.Append(" where "); where.Apply(builder); }