anlek/mongify

Reference structure doesn't apply

jcheng418 opened this issue · 5 comments

Hi I tried to reference "project" and "owner" object ID into LU_object document. The translation.rb file is as following. The mongify process doesn't have any error reported.

table "lu_project" do
column "id",:key
column "project_id", :integer
column "project_guid", :string
column "project_name", :string
column "project_desc", :string
column "creation_timestamp", :datetime
column "modification_timestamp", :datetime
column "project_status", :string
column "metadata_id", :integer
end

table "lu_owner" do
column "id", :key
column "owner_id", :integer
column "owner_guid", :string
column "owner_name", :string
column "owner_login", :string
column "creation_timestamp", :datetime
column "modification_timestamp", :datetime
column "owner_status", :string
end

table "lu_object" do
column "object_id", :integer
column "object_guid", :string
column "object_name", :string
column "object_desc", :string
column "object_location", :string
column "creation_date", :date
column "modification_date", :date
column "creation_timestamp", :datetime
column "modification_timestamp", :datetime
column "project_id", :integer, :references => :lu_project
column "owner_id", :integer, :references => :lu_owner
end

image

but the lu_object collection I get still contains project_id and owner_id with integer instead of the project object id and owner object id. Any ideas? The mongify version I'm using is 1.3.1.

anlek commented

Hey, thanks for the clear issue report.
The reason it doesn't update the IDs is that you need to specify what the ID references to:
column "owner_id", :integer, :references => :users. However, I'm not sure what your IDs are referring to, table wise. If you meant that owner_id should be the table's primary key, you just specify:
column "owner_id", :key (instead of :integer)

You can read more on this via the docs: http://www.rubydoc.info/gems/mongify/

Hope that helps,
Andrew

Hi,

In my lu_object configuration, I specified what the Project_ID,Owner_ID references to:

able "lu_object" do
column "object_id", :integer
column "object_guid", :string
column "object_name", :string
column "object_desc", :string
column "object_location", :string
column "creation_date", :date
column "modification_date", :date
column "creation_timestamp", :datetime
column "modification_timestamp", :datetime
column "project_id", :integer, :references => :lu_project
column "owner_id", :integer, :references => :lu_owner

end

Basically, I'm hoping the Mongo ObjectID of l_u_project_ and lu_owner tables can be referred in lu_object table. Can you pls advise what I should change to make it work?

anlek commented

Right, I missed that, sorry.
It should work with lu_project field id should be referenced under lu_object in project_id. There might be an issue with your lu_object not having a key field (as I update fields after all the tables are setup). Is there a way to use object_id as a key? Maybe you can set it to: column "object_id", :key, as: :string.

You'll have to test on your data to see if it works.

Good luck,
Andrew

Thank you Andrew. Let me do a test and let you know. In lu_object collection, object_id is an integer so what does "as:: string" mean?

anlek commented

Hey @jcheng418,
I just realized you had a question in your last comment.
I reviewed your setup again, and I don't think as: :string is valid for your situation.

Let me know if you got it working or not.