Exemple #1
0
        public DocResult FindDocs(FindStatement fs)
        {
            protocol.SendFind(fs.Target.Schema.Name, fs.Target.Name, false, fs.FilterData, fs.findParams);
            DocResult result = new DocResult(this);

            return(result);
        }
 protected DocResult ExecuteFindStatement(FindStatement stmt)
 {
     return(stmt.Execute());
 }
 public QueryStatement(FindStatement statement)
 {
     this.findStatement = statement;
     SetValues(statement.Target, statement.FilterData, null, false);
 }
Exemple #4
0
        /// <summary>
        /// Creates a <see cref="FindStatement"/> with the given condition which can be used to find documents in a
        /// collection.
        /// </summary>
        /// <param name="condition">An optional condition to match documents.</param>
        /// <returns>A <see cref="FindStatement"/> object set with the given condition.</returns>
        /// <remarks>The statement can then be further modified before execution.</remarks>
        public FindStatement Find(string condition = null)
        {
            FindStatement stmt = new FindStatement(this, condition);

            return(stmt);
        }
Exemple #5
0
        public int PrepareStatement <TResult>(BaseStatement <TResult> statement)
            where TResult : BaseResult
        {
            int stmtId = Interlocked.Increment(ref _stmtId);

            switch (statement.GetType().Name)
            {
            case nameof(FindStatement):
                FindStatement fs = statement as FindStatement;
                Debug.Assert(fs != null);
                protocol.SendPrepareStatement(
                    (uint)stmtId,
                    DataAccess.PreparedStatementType.Find,
                    fs.Target.Schema.Name,
                    fs.Target.Name,
                    false,
                    fs.FilterData,
                    fs.findParams);
                break;

            case nameof(TableSelectStatement):
                TableSelectStatement ss = statement as TableSelectStatement;
                Debug.Assert(ss != null);
                protocol.SendPrepareStatement(
                    (uint)stmtId,
                    DataAccess.PreparedStatementType.Find,
                    ss.Target.Schema.Name,
                    ss.Target.Name,
                    true,
                    ss.FilterData,
                    ss.findParams);
                break;

            case nameof(ModifyStatement):
                ModifyStatement ms = statement as ModifyStatement;
                Debug.Assert(ms != null);
                protocol.SendPrepareStatement(
                    (uint)stmtId,
                    DataAccess.PreparedStatementType.Update,
                    ms.Target.Schema.Name,
                    ms.Target.Name,
                    false,
                    ms.FilterData,
                    null,
                    ms.Updates);
                break;

            case nameof(TableUpdateStatement):
                TableUpdateStatement us = statement as TableUpdateStatement;
                Debug.Assert(us != null);
                protocol.SendPrepareStatement(
                    (uint)stmtId,
                    DataAccess.PreparedStatementType.Update,
                    us.Target.Schema.Name,
                    us.Target.Name,
                    true,
                    us.FilterData,
                    null,
                    us.updates);
                break;

            case nameof(RemoveStatement):
                RemoveStatement rs = statement as RemoveStatement;
                Debug.Assert(rs != null);
                protocol.SendPrepareStatement(
                    (uint)stmtId,
                    DataAccess.PreparedStatementType.Delete,
                    rs.Target.Schema.Name,
                    rs.Target.Name,
                    false,
                    rs.FilterData,
                    null);
                break;

            case nameof(TableDeleteStatement):
                TableDeleteStatement ds = statement as TableDeleteStatement;
                Debug.Assert(ds != null);
                protocol.SendPrepareStatement(
                    (uint)stmtId,
                    DataAccess.PreparedStatementType.Delete,
                    ds.Target.Schema.Name,
                    ds.Target.Name,
                    true,
                    ds.FilterData,
                    null);
                break;

            case nameof(TableInsertStatement):
                TableInsertStatement insert = statement as TableInsertStatement;
                Debug.Assert(insert != null);
                protocol.SendPrepareStatement(
                    (uint)stmtId,
                    DataAccess.PreparedStatementType.Insert,
                    insert.Target.Schema.Name,
                    insert.Target.Name,
                    true,
                    null,
                    null,
                    null,
                    insert.values.ToArray(),
                    insert.fields,
                    false);
                break;

            case nameof(SqlStatement):
                SqlStatement sqlStatement = statement as SqlStatement;
                Debug.Assert(sqlStatement != null);
                protocol.SendPrepareStatement(
                    (uint)stmtId,
                    DataAccess.PreparedStatementType.SqlStatement,
                    null,
                    null,
                    true,
                    null,
                    null,
                    null,
                    sqlStatement.parameters.ToArray(),
                    null,
                    false,
                    sqlStatement.SQL);
                break;

            default:
                throw new NotSupportedException(statement.GetType().Name);
            }
            _preparedStatements.Add(stmtId);
            return(stmtId);
        }