class LoadDefaults < ActiveRecord::Migration def change reversible do |dir| dir.up do u_a = Unit.create shortname: "g", name: "gram" u_aa = Unit.create shortname: "mg", name: "milligram" u_ab = Unit.create shortname: "kg", name: "kilogram" u_ac = Unit.create shortname: "ug", name: "microgram" u_b = Unit.create shortname: "kcal", name: "kilocalorie" u_c = Unit.create shortname: "%", name: "percent" # https://www.fsai.ie/uploadedFiles/Consol_Reg1169_2011.pdf # https://www.fsai.ie/legislation/food_legislation/food_information_fic/nutrition_labelling.html e_a = Quantity.create domain: :diet, parent: nil, name: "Energy", description: "Total energy" e_aa = Quantity.create domain: :diet, parent: e_a, name: "calculated", description: "Total energy calculated from macronutrients" e_ab = Quantity.create domain: :diet, parent: e_a, name: "as %RM", description: "Total energy percent value relative to current" \ " resting metabolism" e_ac = Quantity.create domain: :diet, parent: e_a, name: "proteins", description: "Calculated proteins energy" e_aca = Quantity.create domain: :diet, parent: e_ac, name: "as %RM", description: "" e_ad = Quantity.create domain: :diet, parent: e_a, name: "fats", description: "Calculated fats energy" e_ada = Quantity.create domain: :diet, parent: e_ad, name: "as %RM", description: "" e_ae = Quantity.create domain: :diet, parent: e_a, name: "carbs", description: "Calculated carbs energy" e_aea = Quantity.create domain: :diet, parent: e_ae, name: "as %RM", description: "" p_a = Quantity.create domain: :diet, parent: nil, name: "Proteins", description: "Total amount of proteins" f_a = Quantity.create domain: :diet, parent: nil, name: "Fats", description: "Total lipids, including phospholipids" f_aa = Quantity.create domain: :diet, parent: f_a, name: "Fatty acids", description: "" f_aaa = Quantity.create domain: :diet, parent: f_aa, name: "Saturated", description: "Fatty acids without double bond" f_aab = Quantity.create domain: :diet, parent: f_aa, name: "Unsaturated", description: "" f_aaba = Quantity.create domain: :diet, parent: f_aab, name: "Monounsaturated", description: "Fatty acids with one cis double bond" f_aabb = Quantity.create domain: :diet, parent: f_aab, name: "Polyunsaturated", description: "Fatty acids with two or more cis," \ " cis-methylene interrupted double bonds; PUFA" f_aabba = Quantity.create domain: :diet, parent: f_aabb, name: "Omega-3 (n-3)", description: "" f_aabbaa = Quantity.create domain: :diet, parent: f_aabba, name: "ALA 18:3(n-3)", description: "alpha-Linolenic acid" f_aabbab = Quantity.create domain: :diet, parent: f_aabba, name: "EPA 20:5(n-3)", description: "Eicosapentaenoic acid; also icosapentaenoic" \ " acid" f_aabbac = Quantity.create domain: :diet, parent: f_aabba, name: "DHA 22:6(n-3)", description: "Docosahexaenoic acid" f_aabbb = Quantity.create domain: :diet, parent: f_aabb, name: "Omega-6 (n-6)", description: "" f_aabc = Quantity.create domain: :diet, parent: f_aab, name: "Trans", description: "Fatty acids with at least one non-conjugated C-C" \ " double bond in the trans configuration" c_a = Quantity.create domain: :diet, parent: nil, name: "Carbs", description: "Total amount of carbohydrates" c_aa = Quantity.create domain: :diet, parent: c_a, name: "Digestible", description: "" c_aaa = Quantity.create domain: :diet, parent: c_aa, name: "Sugars", description: "Monosaccharides and disaccharides, excluding polyols" c_aaaa = Quantity.create domain: :diet, parent: c_aaa, name: "Monosaccharides", description: "" c_aaaaa = Quantity.create domain: :diet, parent: c_aaaa, name: "Glucose", description: "" c_aaaab = Quantity.create domain: :diet, parent: c_aaaa, name: "Fructose", description: "" c_aaab = Quantity.create domain: :diet, parent: c_aaa, name: "Disaccharides", description: "" c_aaaba = Quantity.create domain: :diet, parent: c_aaab, name: "Sucrose", description: "" c_aaabb = Quantity.create domain: :diet, parent: c_aaab, name: "Lactose", description: "" c_aab = Quantity.create domain: :diet, parent: c_aa, name: "Polyols", description: "Alcohols containing more than 2 hydroxyl groups" c_aac = Quantity.create domain: :diet, parent: c_aa, name: "Polysaccharides", description: "" c_aaca = Quantity.create domain: :diet, parent: c_aac, name: "Starch", description: "" c_ab = Quantity.create domain: :diet, parent: c_a, name: "Indigestible", description: "" c_aba = Quantity.create domain: :diet, parent: c_ab, name: "Fibre", description: "Carbohydrate polymers with 3 or more monomeric" \ " units, which are neither digested nor absorbed in the human small intestine" m_a = Quantity.create domain: :diet, parent: nil, name: "Minerals", description: "" m_aa = Quantity.create domain: :diet, parent: m_a, name: "Salt", description: "Sodium chloride" v_a = Quantity.create domain: :diet, parent: nil, name: "Vitamins", description: "" v_aa = Quantity.create domain: :diet, parent: v_a, name: "Vitamin A", description: "" v_aaa = Quantity.create domain: :diet, parent: v_aa, name: "Retinol (A1)", description: "" v_ab = Quantity.create domain: :diet, parent: v_a, name: "Provitamin A", description: "" v_aba = Quantity.create domain: :diet, parent: v_ab, name: "beta-Carotene", description: "" v_ac = Quantity.create domain: :diet, parent: v_a, name: "Vitamin B", description: "" v_aca = Quantity.create domain: :diet, parent: v_ac, name: "Thiamine (B1)", description: "" v_acb = Quantity.create domain: :diet, parent: v_ac, name: "Riboflavin (B2)", description: "Vitamin G" v_acc = Quantity.create domain: :diet, parent: v_ac, name: "Vitamin B3", description: "Vitamin PP" v_acca = Quantity.create domain: :diet, parent: v_acc, name: "Niacin", description: "Nicotinic acid" v_acd = Quantity.create domain: :diet, parent: v_ac, name: "Vitamin B5", description: "Pantothenic acid" v_ace = Quantity.create domain: :diet, parent: v_ac, name: "Vitamin B6", description: "" v_acf = Quantity.create domain: :diet, parent: v_ac, name: "Biotin (B7)", description: "Vitamin H, also coenzyme R" v_acg = Quantity.create domain: :diet, parent: v_ac, name: "Folate", description: "Includes: folic acid, folacin and vitamin B9" v_acga = Quantity.create domain: :diet, parent: v_acg, name: "Vitamin B9", description: "" v_ach = Quantity.create domain: :diet, parent: v_ac, name: "Cobalamin (B12)", description: "" v_ad = Quantity.create domain: :diet, parent: v_a, name: "Vitamin C", description: "" v_ae = Quantity.create domain: :diet, parent: v_a, name: "Vitamin D", description: "Calciferol" v_aea = Quantity.create domain: :diet, parent: v_ae, name: "Cholecalciferol (D3)", description: "" v_af = Quantity.create domain: :diet, parent: v_a, name: "Vitamin E", description: "" v_ag = Quantity.create domain: :diet, parent: v_a, name: "Vitamin K", description: "" b_a = Quantity.create domain: :measurement, parent: nil, name: "Body composition", description: "" b_aa = Quantity.create domain: :measurement, parent: b_a, name: "Weight", description: "Total weight" b_aaa = Quantity.create domain: :measurement, parent: b_aa, name: "Fat", description: "Fat weight" b_aab = Quantity.create domain: :measurement, parent: b_aa, name: "Muscle", description: "Muscle weight" b_ab = Quantity.create domain: :measurement, parent: b_a, name: "Composition", description: "" b_aba = Quantity.create domain: :measurement, parent: b_ab, name: "% fat", description: "Fat as a % of total body weight" b_abb = Quantity.create domain: :measurement, parent: b_ab, name: "% muscle", description: "Muscle as a % of total body weight" b_ac = Quantity.create domain: :measurement, parent: b_a, name: "RM", description: "Resting metabolism" b_ad = Quantity.create domain: :measurement, parent: b_a, name: "VF", description: "Visceral fat" # Formulas go at the and to make sure dependencies exist e_aa.create_formula zero_nil: true, unit: u_b, code: "4*Proteins + 9*Fats + 4*Carbs + 2*Fibre" e_ab.create_formula zero_nil: true, unit: u_c, code: "100*Energy/RM.lastBefore(Meal.eaten_at||Meal.created_at)" e_ac.create_formula zero_nil: true, unit: u_b, code: "4*Proteins" e_aca.create_formula zero_nil: true, unit: u_c, code: "100*proteins/RM.lastBefore(Meal.eaten_at||Meal.created_at)" e_ad.create_formula zero_nil: true, unit: u_b, code: "4*Fats" e_ada.create_formula zero_nil: true, unit: u_c, code: "100*fats/RM.lastBefore(Meal.eaten_at||Meal.created_at)" e_ae.create_formula zero_nil: true, unit: u_b, code: "4*Carbs" e_aea.create_formula zero_nil: true, unit: u_c, code: "100*carbs/RM.lastBefore(Meal.eaten_at||Meal.created_at)" b_aaa.create_formula zero_nil: true, unit: u_ab, code: "'% fat' * Weight" s_a = Source.create name: "nutrition label", description: "nutrition facts taken from package nutrition label" end dir.down do Source.where(project: nil).delete_all Formula.joins(:quantity).where(quantities: {project_id: nil}).delete_all Quantity.where(project: nil).delete_all Unit.where(project: nil).delete_all end end end end