gopkg.in/rethinkdb/rethinkdb-go.v6@v6.2.2/query_time.go (about)

     1  package rethinkdb
     2  
     3  import (
     4  	p "gopkg.in/rethinkdb/rethinkdb-go.v6/ql2"
     5  )
     6  
     7  // Now returns a time object representing the current time in UTC
     8  func Now(args ...interface{}) Term {
     9  	return constructRootTerm("Now", p.Term_NOW, args, map[string]interface{}{})
    10  }
    11  
    12  // Time creates a time object for a specific time
    13  func Time(args ...interface{}) Term {
    14  	return constructRootTerm("Time", p.Term_TIME, args, map[string]interface{}{})
    15  }
    16  
    17  // EpochTime returns a time object based on seconds since epoch
    18  func EpochTime(args ...interface{}) Term {
    19  	return constructRootTerm("EpochTime", p.Term_EPOCH_TIME, args, map[string]interface{}{})
    20  }
    21  
    22  // ISO8601Opts contains the optional arguments for the ISO8601 term
    23  type ISO8601Opts struct {
    24  	DefaultTimezone interface{} `rethinkdb:"default_timezone,omitempty"`
    25  }
    26  
    27  func (o ISO8601Opts) toMap() map[string]interface{} {
    28  	return optArgsToMap(o)
    29  }
    30  
    31  // ISO8601 returns a time object based on an ISO8601 formatted date-time string
    32  func ISO8601(date interface{}, optArgs ...ISO8601Opts) Term {
    33  
    34  	opts := map[string]interface{}{}
    35  	if len(optArgs) >= 1 {
    36  		opts = optArgs[0].toMap()
    37  	}
    38  	return constructRootTerm("ISO8601", p.Term_ISO8601, []interface{}{date}, opts)
    39  }
    40  
    41  // InTimezone returns a new time object with a different time zone. While the
    42  // time stays the same, the results returned by methods such as hours() will
    43  // change since they take the timezone into account. The timezone argument
    44  // has to be of the ISO 8601 format.
    45  func (t Term) InTimezone(args ...interface{}) Term {
    46  	return constructMethodTerm(t, "InTimezone", p.Term_IN_TIMEZONE, args, map[string]interface{}{})
    47  }
    48  
    49  // Timezone returns the timezone of the time object
    50  func (t Term) Timezone(args ...interface{}) Term {
    51  	return constructMethodTerm(t, "Timezone", p.Term_TIMEZONE, args, map[string]interface{}{})
    52  }
    53  
    54  // DuringOpts contains the optional arguments for the During term
    55  type DuringOpts struct {
    56  	LeftBound  interface{} `rethinkdb:"left_bound,omitempty"`
    57  	RightBound interface{} `rethinkdb:"right_bound,omitempty"`
    58  }
    59  
    60  func (o DuringOpts) toMap() map[string]interface{} {
    61  	return optArgsToMap(o)
    62  }
    63  
    64  // During returns true if a time is between two other times
    65  // (by default, inclusive for the start, exclusive for the end).
    66  func (t Term) During(startTime, endTime interface{}, optArgs ...DuringOpts) Term {
    67  	opts := map[string]interface{}{}
    68  	if len(optArgs) >= 1 {
    69  		opts = optArgs[0].toMap()
    70  	}
    71  	return constructMethodTerm(t, "During", p.Term_DURING, []interface{}{startTime, endTime}, opts)
    72  }
    73  
    74  // Date returns a new time object only based on the day, month and year
    75  // (ie. the same day at 00:00).
    76  func (t Term) Date(args ...interface{}) Term {
    77  	return constructMethodTerm(t, "Date", p.Term_DATE, args, map[string]interface{}{})
    78  }
    79  
    80  // TimeOfDay returns the number of seconds elapsed since the beginning of the
    81  // day stored in the time object.
    82  func (t Term) TimeOfDay(args ...interface{}) Term {
    83  	return constructMethodTerm(t, "TimeOfDay", p.Term_TIME_OF_DAY, args, map[string]interface{}{})
    84  }
    85  
    86  // Year returns the year of a time object.
    87  func (t Term) Year(args ...interface{}) Term {
    88  	return constructMethodTerm(t, "Year", p.Term_YEAR, args, map[string]interface{}{})
    89  }
    90  
    91  // Month returns the month of a time object as a number between 1 and 12.
    92  // For your convenience, the terms r.January(), r.February() etc. are
    93  // defined and map to the appropriate integer.
    94  func (t Term) Month(args ...interface{}) Term {
    95  	return constructMethodTerm(t, "Month", p.Term_MONTH, args, map[string]interface{}{})
    96  }
    97  
    98  // Day return the day of a time object as a number between 1 and 31.
    99  func (t Term) Day(args ...interface{}) Term {
   100  	return constructMethodTerm(t, "Day", p.Term_DAY, args, map[string]interface{}{})
   101  }
   102  
   103  // DayOfWeek returns the day of week of a time object as a number between
   104  // 1 and 7 (following ISO 8601 standard). For your convenience,
   105  // the terms r.Monday(), r.Tuesday() etc. are defined and map to
   106  // the appropriate integer.
   107  func (t Term) DayOfWeek(args ...interface{}) Term {
   108  	return constructMethodTerm(t, "DayOfWeek", p.Term_DAY_OF_WEEK, args, map[string]interface{}{})
   109  }
   110  
   111  // DayOfYear returns the day of the year of a time object as a number between
   112  // 1 and 366 (following ISO 8601 standard).
   113  func (t Term) DayOfYear(args ...interface{}) Term {
   114  	return constructMethodTerm(t, "DayOfYear", p.Term_DAY_OF_YEAR, args, map[string]interface{}{})
   115  }
   116  
   117  // Hours returns the hour in a time object as a number between 0 and 23.
   118  func (t Term) Hours(args ...interface{}) Term {
   119  	return constructMethodTerm(t, "Hours", p.Term_HOURS, args, map[string]interface{}{})
   120  }
   121  
   122  // Minutes returns the minute in a time object as a number between 0 and 59.
   123  func (t Term) Minutes(args ...interface{}) Term {
   124  	return constructMethodTerm(t, "Minutes", p.Term_MINUTES, args, map[string]interface{}{})
   125  }
   126  
   127  // Seconds returns the seconds in a time object as a number between 0 and
   128  // 59.999 (double precision).
   129  func (t Term) Seconds(args ...interface{}) Term {
   130  	return constructMethodTerm(t, "Seconds", p.Term_SECONDS, args, map[string]interface{}{})
   131  }
   132  
   133  // ToISO8601 converts a time object to its iso 8601 format.
   134  func (t Term) ToISO8601(args ...interface{}) Term {
   135  	return constructMethodTerm(t, "ToISO8601", p.Term_TO_ISO8601, args, map[string]interface{}{})
   136  }
   137  
   138  // ToEpochTime converts a time object to its epoch time.
   139  func (t Term) ToEpochTime(args ...interface{}) Term {
   140  	return constructMethodTerm(t, "ToEpochTime", p.Term_TO_EPOCH_TIME, args, map[string]interface{}{})
   141  }
   142  
   143  var (
   144  	// Days
   145  
   146  	// Monday is a constant representing the day of the week Monday
   147  	Monday = constructRootTerm("Monday", p.Term_MONDAY, []interface{}{}, map[string]interface{}{})
   148  	// Tuesday is a constant representing the day of the week Tuesday
   149  	Tuesday = constructRootTerm("Tuesday", p.Term_TUESDAY, []interface{}{}, map[string]interface{}{})
   150  	// Wednesday is a constant representing the day of the week Wednesday
   151  	Wednesday = constructRootTerm("Wednesday", p.Term_WEDNESDAY, []interface{}{}, map[string]interface{}{})
   152  	// Thursday is a constant representing the day of the week Thursday
   153  	Thursday = constructRootTerm("Thursday", p.Term_THURSDAY, []interface{}{}, map[string]interface{}{})
   154  	// Friday is a constant representing the day of the week Friday
   155  	Friday = constructRootTerm("Friday", p.Term_FRIDAY, []interface{}{}, map[string]interface{}{})
   156  	// Saturday is a constant representing the day of the week Saturday
   157  	Saturday = constructRootTerm("Saturday", p.Term_SATURDAY, []interface{}{}, map[string]interface{}{})
   158  	// Sunday is a constant representing the day of the week Sunday
   159  	Sunday = constructRootTerm("Sunday", p.Term_SUNDAY, []interface{}{}, map[string]interface{}{})
   160  
   161  	// Months
   162  
   163  	// January is a constant representing the month January
   164  	January = constructRootTerm("January", p.Term_JANUARY, []interface{}{}, map[string]interface{}{})
   165  	// February is a constant representing the month February
   166  	February = constructRootTerm("February", p.Term_FEBRUARY, []interface{}{}, map[string]interface{}{})
   167  	// March is a constant representing the month March
   168  	March = constructRootTerm("March", p.Term_MARCH, []interface{}{}, map[string]interface{}{})
   169  	// April is a constant representing the month April
   170  	April = constructRootTerm("April", p.Term_APRIL, []interface{}{}, map[string]interface{}{})
   171  	// May is a constant representing the month May
   172  	May = constructRootTerm("May", p.Term_MAY, []interface{}{}, map[string]interface{}{})
   173  	// June is a constant representing the month June
   174  	June = constructRootTerm("June", p.Term_JUNE, []interface{}{}, map[string]interface{}{})
   175  	// July is a constant representing the month July
   176  	July = constructRootTerm("July", p.Term_JULY, []interface{}{}, map[string]interface{}{})
   177  	// August is a constant representing the month August
   178  	August = constructRootTerm("August", p.Term_AUGUST, []interface{}{}, map[string]interface{}{})
   179  	// September is a constant representing the month September
   180  	September = constructRootTerm("September", p.Term_SEPTEMBER, []interface{}{}, map[string]interface{}{})
   181  	// October is a constant representing the month October
   182  	October = constructRootTerm("October", p.Term_OCTOBER, []interface{}{}, map[string]interface{}{})
   183  	// November is a constant representing the month November
   184  	November = constructRootTerm("November", p.Term_NOVEMBER, []interface{}{}, map[string]interface{}{})
   185  	// December is a constant representing the month December
   186  	December = constructRootTerm("December", p.Term_DECEMBER, []interface{}{}, map[string]interface{}{})
   187  )