Foreverland / SYNCPropertyMapper

Map your Core Data properties with ease
37 stars 16 forks source link

Improve inflection methods #141

Closed 3lvis closed 7 years ago

3lvis commented 7 years ago

Can be used as

let result = user.hyp_dictionary(using: .snakeCase, andRelationshipType: .array)
3lvis commented 7 years ago
screen shot 2016-11-13 at 5 34 56 pm
achirkof commented 7 years ago

Wow! I will go to test.

achirkof commented 7 years ago

@3lvis it is strange but not all names are camelCaseed:

COMPLETED WORKOUT: {
  "workoutName" : "Workout",
  "planned_to_ids" : [],
  "_id" : "FowQzznecDMvymf5g",
  "workoutexercises" : [
    {
      "exerciseName" : "",
      "_id" : "WWeyhPHuuXr3LEHTo",
      "exerciseDesc" : "",
      "mainMuscle" : "",
      "exercise_sets" : [
        {
          "_id" : "dAP4PF52TYRhT3CyF",
          "isCompleted" : 1,
          "setNumber" : 1,
          "setWeight" : 19.5,
          "setReps" : 7
        },
        {
          "_id" : "RHAF217QJRajfkhm3",
          "isCompleted" : 1,
          "setNumber" : 0,
          "setWeight" : 7.5,
          "setReps" : 5
        }
      ]
    },
    {
      "exerciseName" : "",
      "_id" : "3zHjHQbFiKR4eRjH2",
      "exerciseDesc" : "",
      "mainMuscle" : "",
      "exercise_sets" : [
        {
          "_id" : "v417PK8MlI28uwBdO",
          "isCompleted" : 1,
          "setNumber" : 0,
          "setWeight" : 5.5,
          "setReps" : 9
        }
      ]
    }
  ],
  "workoutDesc" : "<p><br><\/p>"
}

Field workoutexercises which is relation to Exercise model is not cased. Also planned_to_ids and exercise_sets are snake_caseed and are also relation fields.

Here is my model image 2016-11-13 at 8 13 03 pm

3lvis commented 7 years ago

Any of this have custom remote keys?

https://github.com/SyncDB/SYNCPropertyMapper#custom

achirkof commented 7 years ago

Only one field have custom key

eventSourceID -> plannedToIDs image 2016-11-13 at 10 02 56 pm

but other not.

3lvis commented 7 years ago

@achirkof thanks a lot for your help testing this out.

Could you check again, please? I added some unit tests and improvements.

https://github.com/SyncDB/SYNCPropertyMapper/pull/142

achirkof commented 7 years ago

Looks like nothing changed:

CAMEL Cased:

{
  "workoutName" : "Workout",
  "planned_to_ids" : [],
  "_id" : "FowQzznecDMvymf5g",
  "workout_exercises" : [
    {
      "exerciseName" : "",
      "_id" : "WWeyhPHuuXr3LEHTo",
      "exerciseDesc" : "",
      "mainMuscle" : "",
      "exercise_sets" : [
        {
          "_id" : "3K4ZiTnvJFbnYH6Jd",
          "isCompleted" : 1,
          "setNumber" : 0,
          "setWeight" : 2.5,
          "setReps" : 5
        },
        {
          "_id" : "aVZAasaevTf8Fc9Nw",
          "isCompleted" : 1,
          "setNumber" : 1,
          "setWeight" : 4.5,
          "setReps" : 10
        }
      ]
    },
    {
      "exerciseName" : "",
      "_id" : "3zHjHQbFiKR4eRjH2",
      "exerciseDesc" : "<",
      "mainMuscle" : "",
      "exercise_sets" : [
        {
          "_id" : "sRkd2urobC2zvh0f9",
          "isCompleted" : 1,
          "setNumber" : 0,
          "setWeight" : 7,
          "setReps" : 5
        }
      ]
    }
  ],
  "workoutDesc" : "<p><br><\/p>"
}

SNAKE Cased:

{
  "planned_to_ids" : [

  ],
  "_id" : "FowQzznecDMvymf5g",
  "workout_desc" : "<p><br><\/p>",
  "workout_name" : "Workout",
  "workout_exercises" : [
    {
      "exercise_name" : "",
      "_id" : "WWeyhPHuuXr3LEHTo",
      "exercise_desc" : "",
      "main_muscle" : "",
      "exercise_sets" : [
        {
          "set_number" : 0,
          "is_completed" : 1,
          "_id" : "3K4ZiTnvJFbnYH6Jd",
          "set_reps" : 5,
          "set_weight" : 2.5
        },
        {
          "set_number" : 1,
          "is_completed" : 1,
          "_id" : "aVZAasaevTf8Fc9Nw",
          "set_reps" : 10,
          "set_weight" : 4.5
        }
      ]
    },
    {
      "exercise_name" : "",
      "_id" : "3zHjHQbFiKR4eRjH2",
      "exercise_desc" : "",
      "main_muscle" : "",
      "exercise_sets" : [
        {
          "set_number" : 0,
          "is_completed" : 1,
          "_id" : "sRkd2urobC2zvh0f9",
          "set_reps" : 5,
          "set_weight" : 7
        }
      ]
    }
  ]
}

You can take my project and check. Export code located in file WorkoutDetail.swift line 81. @3lvis I forgot to give you a user/password to login: user: user-1@test.com pass: 111

achirkof commented 7 years ago

Hi @3lvis ! Have idea why export not fully camelCsed?

3lvis commented 7 years ago

@achirkof Hi! I haven't had enough time to look closely into this. I'll see what I can do :)