Sha256: 77e4718c12c91d221d23e9564a7407d94aa4f17d24d37571d5b3e11f6e5cb46f

Contents?: true

Size: 1.36 KB

Versions: 2

Compression:

Stored size: 1.36 KB

Contents

# frozen_string_literal: true

require_relative '../types/std'
require_relative '../types/extras'
require_relative '../entity'
require_relative '../db'

autoload :Observation, 'inat/data/entity/observation'
autoload :Project,     'inat/data/entity/project'

class Request < Entity

  table :requests

  field :time, type: Time, index: true
  field :query, type: String, unique: true

  field :project, type: Project, index: true

  links :observations, item_type: Observation, index: true

  class << self

    def DDL
      super +
      "CREATE VIEW IF NOT EXISTS project_observations AS\n" +
      "  SELECT r.project_id, ro.observation_id\n" +
      "         FROM requests r, request_observations ro\n" +
      "         WHERE r.id = ro.request_id AND r.project_id IS NOT NULL;\n"
    end

    def create query_string, project_id
      update do
        max_id = DB.execute("SELECT max(id) AS id FROM requests;").map{ |r| r['id'] }.first
        new_id = if max_id == nil
          1
        else
          max_id + 1
        end
          @entities ||= {}
        @entities[new_id] ||= new new_id
        @entities[new_id].time = Time::at(0)
        @entities[new_id].query = query_string
        @entities[new_id].project_id = project_id
        @entities[new_id].save
      end
    end

  end

  attr_accessor :active

  def initialize id
    super(id)
    @active = false
  end

end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
inat-get-0.8.0.12 lib/inat/data/entity/request.rb
inat-get-0.8.0.11 lib/inat/data/entity/request.rb