mirror of
https://github.com/codeninjasllc/codecombat.git
synced 2024-11-28 01:55:38 -05:00
3fd5f49220
Add analytics per-day aggregation collection. Add analytics strings collection. Add per-day aggregation mongo insertion script. Update campaign editor to use aggregation collection. Update queries to use _id instead of created field.
15 lines
823 B
CoffeeScript
15 lines
823 B
CoffeeScript
mongoose = require 'mongoose'
|
|
|
|
module.exports =
|
|
isID: (id) -> _.isString(id) and id.length is 24 and id.match(/[a-f0-9]/gi)?.length is 24
|
|
objectIdFromTimestamp: (timestamp) ->
|
|
# mongoDB ObjectId contains creation date in first 4 bytes
|
|
# So, it can be used instead of a redundant created field
|
|
# http://docs.mongodb.org/manual/reference/object-id/
|
|
# http://stackoverflow.com/questions/8749971/can-i-query-mongodb-objectid-by-date
|
|
# Convert string date to Date object (otherwise assume timestamp is a date)
|
|
timestamp = new Date(timestamp) if typeof(timestamp) == 'string'
|
|
# Convert date object to hex seconds since Unix epoch
|
|
hexSeconds = Math.floor(timestamp/1000).toString(16)
|
|
# Create an ObjectId with that hex timestamp
|
|
mongoose.Types.ObjectId(hexSeconds + "0000000000000000")
|