Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Directus migration #28

Open
3 tasks
oolonek opened this issue Dec 17, 2024 · 1 comment
Open
3 tasks

Directus migration #28

oolonek opened this issue Dec 17, 2024 · 1 comment

Comments

@oolonek
Copy link
Contributor

oolonek commented Dec 17, 2024

@oolonek
Copy link
Contributor Author

oolonek commented Dec 17, 2024

We are looking at the current Field Data table.
This contains information from QField cloud via the API using the following script https://github.com/digital-botanical-gardens-initiative/qfieldcloud-fetcher

Currently the directus table has the following columns

Geographical coordinates are extracted and converted form QFiled cloud field and then appended to the pictures metadata using https://github.com/digital-botanical-gardens-initiative/Pictures_manager

#[cfg(feature = "64-column-tables")]
diesel::table! {
    #[sql_name = "Field_Data"] public.field_data(id) { id -> diesel::sql_types::Integer,
    status -> diesel::sql_types::Text
user_created -> diesel::sql_types::Nullable <
    diesel::sql_types::Uuid >
date_created -> diesel::sql_types::Nullable <
    diesel::sql_types::Timestamptz >
user_updated -> diesel::sql_types::Nullable <
    diesel::sql_types::Uuid >
date_updated -> diesel::sql_types::Nullable <
    diesel::sql_types::Timestamptz >
sample_name -> diesel::sql_types::Nullable <
    diesel::sql_types::Text >
sample_id -> diesel::sql_types::Text
picture_panel ->
    diesel::sql_types::Nullable < diesel::sql_types::Text >
picture_general ->
    diesel::sql_types::Nullable < diesel::sql_types::Text >
picture_detail ->
    diesel::sql_types::Nullable < diesel::sql_types::Text >
picture_cut ->
    diesel::sql_types::Nullable < diesel::sql_types::Text >
picture_panel_label ->
    diesel::sql_types::Nullable < diesel::sql_types::Text >
x_coord ->
    diesel::sql_types::Nullable < diesel::sql_types::Float >
y_coord ->
    diesel::sql_types::Nullable < diesel::sql_types::Float >
#[sql_name =
    "herbivory_(percent)"] herbivory_percent -> diesel::sql_types::Nullable <
    diesel::sql_types::Float >
#[sql_name = "temperature_(°C)"] temperature_celsius ->
    diesel::sql_types::Nullable < diesel::sql_types::Float >
geometry ->
    diesel::sql_types::Nullable < diesel::sql_types::Text >
latitude ->
    diesel::sql_types::Nullable < diesel::sql_types::Float >
longitude ->
    diesel::sql_types::Nullable < diesel::sql_types::Float >
match_name ->
    diesel::sql_types::Nullable < diesel::sql_types::Text >
ott_id ->
    diesel::sql_types::Nullable < diesel::sql_types::Text >
rank ->
    diesel::sql_types::Nullable < diesel::sql_types::Text >
#[sql_name = "wikidataID"]
    wikidata_id -> diesel::sql_types::Nullable < diesel::sql_types::Text >
unknown ->
    diesel::sql_types::Nullable < diesel::sql_types::Text >
qfield_project ->
    diesel::sql_types::Nullable < diesel::sql_types::Text >
collector_fullname ->
    diesel::sql_types::Nullable < diesel::sql_types::Text >
picture_free ->
    diesel::sql_types::Nullable < diesel::sql_types::Text >
no_name_on_list ->
    diesel::sql_types::Nullable < diesel::sql_types::Text >
name_proposition ->
    diesel::sql_types::Nullable < diesel::sql_types::Text >
comment_eco ->
    diesel::sql_types::Nullable < diesel::sql_types::Text >
soil_type ->
    diesel::sql_types::Nullable < diesel::sql_types::Text >
weather ->
    diesel::sql_types::Nullable < diesel::sql_types::Text >
comment_env ->
    diesel::sql_types::Nullable < diesel::sql_types::Text >
observation_subject ->
    diesel::sql_types::Nullable < diesel::sql_types::Text >
collector_inat ->
    diesel::sql_types::Nullable < diesel::sql_types::Text >
collector_orcid ->
    diesel::sql_types::Nullable < diesel::sql_types::Text >
date ->
    diesel::sql_types::Nullable < diesel::sql_types::Text >
taxon_name ->
    diesel::sql_types::Nullable < diesel::sql_types::Text >
is_wild ->
    diesel::sql_types::Nullable < diesel::sql_types::Integer >
inat_upload ->
    diesel::sql_types::Nullable < diesel::sql_types::Integer >
ipen ->
    diesel::sql_types::Nullable < diesel::sql_types::Text > }
}

Should be

#[cfg(feature = "64-column-tables")]
diesel::table! {
    #[sql_name = "Field_Data"] public.field_data(id) {
sample_name -> diesel::sql_types::Nullable <
    diesel::sql_types::Text >
//remind to change this sample_name 
sample_id -> diesel::sql_types::Text
//this is the EMI code
x_coord ->
    diesel::sql_types::Nullable < diesel::sql_types::Float >
y_coord ->
    diesel::sql_types::Nullable < diesel::sql_types::Float >
geometry ->
    diesel::sql_types::Nullable < diesel::sql_types::Text >
latitude ->
    diesel::sql_types::Nullable < diesel::sql_types::Float >
longitude ->
    diesel::sql_types::Nullable < diesel::sql_types::Float >

// the previous columns will be converted to one single FK pointing to the geographical coordinates table.
// here we have two systems the local and

collector_fullname ->
    diesel::sql_types::Nullable < diesel::sql_types::Text >
// will be mapped by FK to the user table


collector_inat ->
    diesel::sql_types::Nullable < diesel::sql_types::Text >
collector_orcid ->
    diesel::sql_types::Nullable < diesel::sql_types::Text >

//will be mapped to Orcid_user and iNat_user tables

no_name_on_list ->
    diesel::sql_types::Nullable < diesel::sql_types::Text >
name_proposition ->
    diesel::sql_types::Nullable < diesel::sql_types::Text >
taxon_name ->
    diesel::sql_types::Nullable < diesel::sql_types::Text >

// to be renormalized to taxa name suggestions

comment_env ->
    diesel::sql_types::Nullable < diesel::sql_types::Text >
comment_eco ->
    diesel::sql_types::Nullable < diesel::sql_types::Text >


observation_subject ->
    diesel::sql_types::Nullable < diesel::sql_types::Text >
// FK to a plants parts / organs ontology table


is_wild ->
    diesel::sql_types::Nullable < diesel::sql_types::Integer >
// This is where we specify if the observation is made on a wild or cultivated organism

inat_upload ->
    diesel::sql_types::Nullable < diesel::sql_types::Integer >
}

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant