Esempio n. 1
0
void
php_cassandra_date_init(INTERNAL_FUNCTION_PARAMETERS)
{
    zval *seconds = NULL;
    cassandra_date *self;

    if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "|z", &seconds) == FAILURE) {
        return;
    }

    if (getThis() && instanceof_function(Z_OBJCE_P(getThis()), cassandra_date_ce TSRMLS_CC)) {
        self = PHP_CASSANDRA_GET_DATE(getThis());
    } else {
        object_init_ex(return_value, cassandra_date_ce);
        self = PHP_CASSANDRA_GET_DATE(return_value);
    }

    if (seconds == NULL) {
        self->date = cass_date_from_epoch(time(NULL));
    } else {
        if (Z_TYPE_P(seconds) != IS_LONG) {
            INVALID_ARGUMENT(seconds, "a number of seconds since the Unix Epoch");
        }
        self->date = cass_date_from_epoch(Z_LVAL_P(seconds));
    }
}
Esempio n. 2
0
/* {{{ Cassandra\Date::fromDateTime() */
PHP_METHOD(Date, fromDateTime)
{
    cassandra_date *self;
    zval *zdatetime;
    php5to7_zval retval;

    if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "z", &zdatetime) == FAILURE) {
        return;
    }

    zend_call_method_with_0_params(PHP5TO7_ZVAL_MAYBE_ADDR_OF(zdatetime),
                                   php_date_get_date_ce(),
                                   NULL,
                                   "gettimestamp",
                                   &retval);

    if (!PHP5TO7_ZVAL_IS_UNDEF(retval) &&
            Z_TYPE_P(PHP5TO7_ZVAL_MAYBE_P(retval)) == IS_LONG) {
        object_init_ex(return_value, cassandra_date_ce);
        self = PHP_CASSANDRA_GET_DATE(return_value);
        self->date = cass_date_from_epoch(PHP5TO7_Z_LVAL_MAYBE_P(retval));
        zval_ptr_dtor(&retval);
        return;
    }
}
Esempio n. 3
0
CassError insert_into(CassSession* session, const char* key) {
  CassError rc = CASS_OK;
  CassStatement* statement = NULL;
  CassFuture* future = NULL;
  cass_uint32_t d;
  cass_int64_t t;
  const char* query = "INSERT INTO examples.date_time (key, d, t) VALUES (?, ?, ?);";
  time_t now = time(NULL);

  d = cass_date_from_epoch(now);
  t = cass_time_from_epoch(now);

  statement = cass_statement_new(query, 3);

  cass_statement_bind_string(statement, 0, key);
  cass_statement_bind_uint32(statement, 1, d);
  cass_statement_bind_int64(statement, 2, t);

  future = cass_session_execute(session, statement);
  cass_future_wait(future);

  rc = cass_future_error_code(future);
  if (rc != CASS_OK) {
    print_error(future);
  }

  cass_future_free(future);
  cass_statement_free(statement);

  return rc;
}
Esempio n. 4
0
TEST(DateTimeUnitTests, DateFromEpoch) {
  EXPECT_EQ(cass_date_from_epoch(0), CASS_DATE_EPOCH);
  EXPECT_EQ(cass_date_from_epoch(24 * 3600), CASS_DATE_EPOCH + 1);
  EXPECT_EQ(cass_date_from_epoch(2 * 24 * 3600), CASS_DATE_EPOCH + 2);
}
Esempio n. 5
0
TEST(DateTimeUnitTests, Simple) {
  time_t now = ::time(NULL);
  cass_uint32_t date = cass_date_from_epoch(now);
  cass_int64_t time = cass_time_from_epoch(now);
  EXPECT_EQ(cass_date_time_to_epoch(date, time), now);
}