示例#1
0
        public void RecordWrongFieldCount()
        {
            var schema = new TableSchemaBuilder
            {
                { "struct", new TableSchemaBuilder {
                      { "x", BigQueryDbType.Int64 }, { "y", BigQueryDbType.String }
                  } }
            }.Build();
            var rawRow = new TableRow
            {
                F = new[]
                {
                    // No value for y
                    new TableCell {
                        V = new JObject {
                            ["f"] = new JArray {
                                new JObject {
                                    ["v"] = "100"
                                }
                            }
                        }
                    }
                }
            };
            var row = new BigQueryRow(rawRow, schema);

            Assert.Throws <InvalidOperationException>(() => row["struct"]);
        }
示例#2
0
 public UserAccount reinstantiate(BigQueryRow row)
 {
     return(new UserAccount(
                (long)row["AccountID"], (string)row["AccountUsername"],
                (string)row["EmailAddress"], (string)row["PasswordHash"], (byte[])Convert.FromBase64String((string)row["PasswordSalt"])
                //(int)row["FacebookID"], (BigQueryNumeric)row["GoogleID"].ToDecimal(LossOfPrecisionHandling.Truncate)
                ));
 }
示例#3
0
 public Session reinstantiate(BigQueryRow row)
 {
     return(new Session(
                (long)row["SessionID"], (string)row["JWTToken"],
                (long)row["AccountID"], (string)row["AccountUsername"],
                (string)row["EmailAddress"], (DateTime)row["DateIssued"]
                //(int)row["FacebookID"], (BigQueryNumeric)row["GoogleID"].ToDecimal(LossOfPrecisionHandling.Truncate)
                ));
 }
示例#4
0
 // Reinstantiates and returns a SavingsGoal from BQ records
 public SavingsGoal reinstantiate(BigQueryRow row)
 {
     return(new SavingsGoal(
                (long)row["SGID"], (long)row["AccountID"], (string)row["Name"],
                this.SavingsGoalDataAccess.castBQNumeric(row["GoalAmt"]),
                this.SavingsGoalDataAccess.castBQNumeric(row["ContrAmt"]),
                this.castPeriod((string)row["Period"]), (long)row["NumPeriods"],
                (DateTime)row["StartDate"], (DateTime)row["EndDate"]
                ));
 }
示例#5
0
        private static void PopulateDataTable(DataTable dt, BigQueryRow row)
        {
            DataRow dr = dt.NewRow();

            foreach (var field in row.Schema.Fields)
            {
                dr[field.Name] = row[field.Name];
            }

            dt.Rows.Add(dr);
        }
示例#6
0
        public Receipt reinstantiate(BigQueryRow row)
        {
            string notes = "";              // Nullable attribute

            if (row["Notes"] != null)
            {
                notes = (string)row["Notes"];
            }

            return(new Receipt(
                       (long)row["RID"], (long)row["TID"],
                       (string)row["ImgURL"],
                       (DateTime)row["PurchaseDate"],
                       notes,
                       newlyCreated: false
                       ));
        }
示例#7
0
        public void Scalars()
        {
            var schema = new TableSchemaBuilder
            {
                { "integer", BigQueryDbType.Int64 },
                { "bool", BigQueryDbType.Bool },
                { "bytes", BigQueryDbType.Bytes },
                { "float", BigQueryDbType.Float64 },
                { "string", BigQueryDbType.String },
                { "timestamp", BigQueryDbType.Timestamp },
            }.Build();
            var rawRow = new TableRow
            {
                F = new[]
                {
                    new TableCell {
                        V = "10"
                    },
                    new TableCell {
                        V = "true"
                    },
                    new TableCell {
                        V = "AQI="
                    },                            // 1, 2
                    new TableCell {
                        V = "2.5"
                    },
                    new TableCell {
                        V = "text"
                    },
                    new TableCell {
                        V = "1477566580.5"
                    },                                    // 2016-10-27T11:09:40.500Z
                }
            };
            var row = new BigQueryRow(rawRow, schema);

            Assert.Equal(10, (long)row["integer"]);
            Assert.Equal(true, (bool)row["bool"]);
            Assert.Equal(new byte[] { 1, 2 }, (byte[])row["bytes"]);
            Assert.Equal(2.5d, (double)row["float"]);
            Assert.Equal("text", (string)row["string"]);
            Assert.Equal(new DateTime(2016, 10, 27, 11, 9, 40, 500, DateTimeKind.Utc), (DateTime)row["timestamp"]);
        }
示例#8
0
        public void Null()
        {
            var schema = new TableSchemaBuilder
            {
                { "text", BigQueryDbType.String },
            }.Build();
            var rawRow = new TableRow
            {
                F = new[]
                {
                    new TableCell {
                        V = null
                    }
                }
            };
            var row = new BigQueryRow(rawRow, schema);

            Assert.Null(row["text"]);
        }
示例#9
0
        public void TimestampRounding(string rawValue, DateTime expected)
        {
            var schema = new TableSchemaBuilder
            {
                { "timestamp", BigQueryDbType.Timestamp },
            }.Build();
            var rawRow = new TableRow
            {
                F = new[]
                {
                    new TableCell {
                        V = rawValue
                    },
                }
            };
            var row = new BigQueryRow(rawRow, schema);

            Assert.Equal(expected, (DateTime)row["timestamp"]);
        }
        public Transaction reinstantiate(BigQueryRow row)
        {
            long SGID = -1;                     // Nullable attribute

            if (row["SGID"] != null)
            {
                SGID = (long)row["SGID"];
            }

            return(new Transaction(
                       (long)row["TID"], (long)row["AccountID"], SGID,
                       (string)row["TransactionName"],
                       this.TransactionDataAccess.castBQNumeric(row["Amount"]),
                       (DateTime)row["DateTransactionMade"],
                       (DateTime)row["DateTransactionEntered"],
                       (bool)row["IsExpense"],
                       //(transactionCategory)row["TransactionCategory"]
                       this.TransactionDataAccess.ParseEnum <transactionCategory>((string)row["TransactionCategory"])
                       ));
        }
        public void TimestampRounding()
        {
            var schema = new TableSchemaBuilder
            {
                { "timestamp", BigQueryDbType.Timestamp },
            }.Build();
            var rawRow = new TableRow
            {
                F = new[]
                {
                    new TableCell {
                        V = "1.090855528173333E9"
                    },
                }
            };
            var row      = new BigQueryRow(rawRow, schema);
            var expected = new DateTime(2004, 7, 26, 15, 25, 28, DateTimeKind.Utc).AddTicks(1733330);

            Assert.Equal(expected, (DateTime)row["timestamp"]);
        }
示例#12
0
        public void InternalConstructor()
        {
            var nextPageToken = "token";
            var schema        = new TableSchema();
            var row           = new BigQueryRow(new TableRow(), schema, schema.IndexFieldNames());
            var rawPage       = new Page <BigQueryRow>(new List <BigQueryRow> {
                row
            }, nextPageToken);
            var jobReference = new JobReference {
                ProjectId = "project", JobId = "job"
            };
            var tableReference = new TableReference {
                ProjectId = "project", DatasetId = "dataset", TableId = "table"
            };
            var page = new BigQueryPage(rawPage, schema, jobReference, tableReference);

            Assert.Equal(new[] { row }, page.Rows);
            Assert.Same(schema, page.Schema);
            Assert.Same(jobReference, page.JobReference);
            Assert.Same(tableReference, page.TableReference);
            Assert.Same(nextPageToken, page.NextPageToken);
        }
        public Subscription reinstantiate(BigQueryRow row)
        {
            long   RID   = -1;
            string notes = "";   // Nullable attribute (receipt ID)

            if (row["RID"] != null)
            {
                RID = (long)row["RID"];
            }


            if (row["Notes"] != null)
            {
                notes = (string)row["Notes"];
            }

            return(new Subscription(
                       (long)row["SID"], (long)row["AccountID"], RID,
                       (DateTime)row["PurchaseDate"], (string)row["Notes"],
                       this.SubscriptionDataAccess.castBQNumeric(row["Amount"]),
                       this.SubscriptionDataAccess.ParseEnum <SubscriptionFrequency>((string)row["RenewFrequency"])));
        }
示例#14
0
 public virtual void FromRow(BigQueryRow row)
 {
     Id = row["id"].ToString();
 }
示例#15
0
        public void Scalars()
        {
            var schema = new TableSchemaBuilder
            {
                { "integer", BigQueryDbType.Int64 },
                { "bool", BigQueryDbType.Bool },
                { "bytes", BigQueryDbType.Bytes },
                { "float", BigQueryDbType.Float64 },
                { "string", BigQueryDbType.String },
                { "timestamp", BigQueryDbType.Timestamp },
                { "date", BigQueryDbType.Date },
                { "dateTime", BigQueryDbType.DateTime },
                { "time", BigQueryDbType.Time },
                { "numeric", BigQueryDbType.Numeric },
                { "geography", BigQueryDbType.Geography },
                { "struct", new TableSchemaBuilder {
                      { "x", BigQueryDbType.Int64 }, { "y", BigQueryDbType.String }
                  } }
            }.Build();
            var rawRow = new TableRow
            {
                F = new[]
                {
                    new TableCell {
                        V = "10"
                    },
                    new TableCell {
                        V = "true"
                    },
                    new TableCell {
                        V = "AQI="
                    },                            // 1, 2
                    new TableCell {
                        V = "2.5"
                    },
                    new TableCell {
                        V = "text"
                    },
                    new TableCell {
                        V = "1477566580.5"
                    },                                    // 2016-10-27T11:09:40.500Z
                    new TableCell {
                        V = "2017-08-09"
                    },
                    new TableCell {
                        V = "2017-08-09T12:34:56.123"
                    },
                    new TableCell {
                        V = "12:34:56.123"
                    },
                    new TableCell {
                        V = "1234567890123456789012345678.123456789"
                    },
                    new TableCell {
                        V = "POINT(1 2)"
                    },
                    new TableCell {
                        V = new JObject {
                            ["f"] = new JArray {
                                new JObject {
                                    ["v"] = "100"
                                }, new JObject {
                                    ["v"] = "xyz"
                                }
                            }
                        }
                    }
                }
            };
            var row = new BigQueryRow(rawRow, schema);

            Assert.Equal(10, (long)row["integer"]);
            Assert.Equal(true, (bool)row["bool"]);
            Assert.Equal(new byte[] { 1, 2 }, (byte[])row["bytes"]);
            Assert.Equal(2.5d, (double)row["float"]);
            Assert.Equal("text", (string)row["string"]);
            Assert.Equal(new DateTime(2016, 10, 27, 11, 9, 40, 500, DateTimeKind.Utc), (DateTime)row["timestamp"]);
            Assert.Equal(new DateTime(2017, 8, 9, 0, 0, 0, DateTimeKind.Utc), (DateTime)row["date"]);
            Assert.Equal(new DateTime(2017, 8, 9, 12, 34, 56, 123, DateTimeKind.Utc), (DateTime)row["dateTime"]);
            Assert.Equal(new TimeSpan(0, 12, 34, 56, 123), (TimeSpan)row["time"]);
            Assert.Equal(BigQueryNumeric.Parse("1234567890123456789012345678.123456789"), (BigQueryNumeric)row["numeric"]);
            Assert.Equal(BigQueryGeography.Parse("POINT(1 2)"), (BigQueryGeography)row["geography"]);
            Assert.Equal(new Dictionary <string, object> {
                { "x", 100L }, { "y", "xyz" }
            }, (Dictionary <string, object>)row["struct"]);
        }
示例#16
0
        public void Arrays()
        {
            var schema = new TableSchemaBuilder
            {
                { "integer", BigQueryDbType.Int64, BigQueryFieldMode.Repeated },
                { "bool", BigQueryDbType.Bool, BigQueryFieldMode.Repeated },
                { "bytes", BigQueryDbType.Bytes, BigQueryFieldMode.Repeated },
                { "float", BigQueryDbType.Float64, BigQueryFieldMode.Repeated },
                { "string", BigQueryDbType.String, BigQueryFieldMode.Repeated },
                { "timestamp", BigQueryDbType.Timestamp, BigQueryFieldMode.Repeated },
                { "date", BigQueryDbType.Date, BigQueryFieldMode.Repeated },
                { "dateTime", BigQueryDbType.DateTime, BigQueryFieldMode.Repeated },
                { "time", BigQueryDbType.Time, BigQueryFieldMode.Repeated },
                { "numeric", BigQueryDbType.Numeric, BigQueryFieldMode.Repeated },
                { "geography", BigQueryDbType.Geography, BigQueryFieldMode.Repeated },
                { "struct", new TableSchemaBuilder {
                      { "x", BigQueryDbType.Int64 }, { "y", BigQueryDbType.String }
                  }, BigQueryFieldMode.Repeated }
            }.Build();
            var rawRow = new TableRow
            {
                F = new[]
                {
                    new TableCell {
                        V = CreateArray("10", "20")
                    },
                    new TableCell {
                        V = CreateArray("true", "false")
                    },
                    new TableCell {
                        V = CreateArray("AQI=", "AQM=")
                    },                                                 // [1, 2], [1, 3]
                    new TableCell {
                        V = CreateArray("2.5", "3.5")
                    },
                    new TableCell {
                        V = CreateArray("text", "more text")
                    },
                    new TableCell {
                        V = CreateArray("1477566580.5", "1477566581.5")
                    },                                                                 // 2016-10-27T11:09:40.500Z, 2016-10-27T11:09:41.500Z
                    new TableCell {
                        V = CreateArray("2017-08-09", "2017-08-10")
                    },
                    new TableCell {
                        V = CreateArray("2017-08-09T12:34:56.123", "2017-08-09T12:34:57.123")
                    },
                    new TableCell {
                        V = CreateArray("12:34:56.123", "12:34:57.123")
                    },
                    new TableCell {
                        V = CreateArray("1234567890123456789012345678.123456789", "0.000000001")
                    },
                    new TableCell {
                        V = CreateArray("POINT(1 3)", "POINT(2 4)")
                    },
                    new TableCell {
                        V = new JArray {
                            new JObject {
                                ["v"] = new JObject {
                                    ["f"] = new JArray {
                                        new JObject {
                                            ["v"] = "100"
                                        }, new JObject {
                                            ["v"] = "xyz"
                                        }
                                    }
                                }
                            },
                            new JObject {
                                ["v"] = new JObject {
                                    ["f"] = new JArray {
                                        new JObject {
                                            ["v"] = "200"
                                        }, new JObject {
                                            ["v"] = "abc"
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            };
            var row = new BigQueryRow(rawRow, schema);

            Assert.Equal(new[] { 10L, 20L }, (long[])row["integer"]);
            Assert.Equal(new[] { true, false }, (bool[])row["bool"]);
            Assert.Equal(new[] { new byte[] { 1, 2 }, new byte[] { 1, 3 } }, (byte[][])row["bytes"]);
            Assert.Equal(new[] { 2.5d, 3.5d }, (double[])row["float"]);
            Assert.Equal(new[] { "text", "more text" }, (string[])row["string"]);
            Assert.Equal(new[] { new DateTime(2016, 10, 27, 11, 9, 40, 500, DateTimeKind.Utc), new DateTime(2016, 10, 27, 11, 9, 41, 500, DateTimeKind.Utc) },
                         (DateTime[])row["timestamp"]);
            Assert.Equal(new[] { new DateTime(2017, 8, 9, 0, 0, 0, DateTimeKind.Utc), new DateTime(2017, 8, 10, 0, 0, 0, DateTimeKind.Utc) },
                         (DateTime[])row["date"]);
            Assert.Equal(new[] { new DateTime(2017, 8, 9, 12, 34, 56, 123, DateTimeKind.Utc), new DateTime(2017, 8, 9, 12, 34, 57, 123, DateTimeKind.Utc) },
                         (DateTime[])row["dateTime"]);
            Assert.Equal(new[] { new TimeSpan(0, 12, 34, 56, 123), new TimeSpan(0, 12, 34, 57, 123) }, (TimeSpan[])row["time"]);
            Assert.Equal(new[] { BigQueryNumeric.Parse("1234567890123456789012345678.123456789"), BigQueryNumeric.Parse("0.000000001") }, (BigQueryNumeric[])row["numeric"]);
            Assert.Equal(new[] { BigQueryGeography.Parse("POINT(1 3)"), BigQueryGeography.Parse("POINT(2 4)") }, (BigQueryGeography[])row["geography"]);
            Assert.Equal(new[]
            {
                new Dictionary <string, object> {
                    { "x", 100L }, { "y", "xyz" }
                },
                new Dictionary <string, object> {
                    { "x", 200L }, { "y", "abc" }
                }
            },
                         (Dictionary <string, object>[])row["struct"]);
        }
示例#17
0
 public override void FromRow(BigQueryRow row)
 {
     base.FromRow(row);
     Title = row["title"].ToString();
     Body = row["body"].ToString();
 }
示例#18
0
 public T FromRow(BigQueryRow resultRow)
 {
     return((T)Cache.ValueFromRow(resultRow));
 }
示例#19
0
 public override void FromRow(BigQueryRow row)
 {
     base.FromRow(row);
     Name = row["tag_name"].ToString();
 }