@@ -96,9 +96,8 @@ public function create(): Preference
96
96
97
97
public function updateOrCreate (): Preference
98
98
{
99
- if (isset ($ this ->preference ->default_value )) {
100
- ValidationHelper::validatePreference ($ this ->preference );
101
- }
99
+ ValidationHelper::validatePreference ($ this ->preference );
100
+
102
101
103
102
$ this ->preference = Preference::updateOrCreate (
104
103
$ this ->preference ->toArrayOnly (['name ' , 'group ' ]),
@@ -116,45 +115,15 @@ public static function initBulk(array $preferences, bool $nullable = false): voi
116
115
throw new InvalidArgumentException ("no preferences provided " );
117
116
}
118
117
119
- foreach ($ preferences as $ key => &$ preferenceData ) {
118
+ foreach ($ preferences as $ index => &$ preferenceData ) {
120
119
if (empty ($ preferenceData ['cast ' ])) {
121
120
$ preferenceData ['cast ' ] = Cast::STRING ;
122
121
}
123
122
if (!array_key_exists ('nullable ' , $ preferenceData )) {
124
123
$ preferenceData ['nullable ' ] = $ nullable ;
125
124
}
126
125
127
- if (empty ($ preferenceData ['name ' ]) || !($ preferenceData ['name ' ] instanceof PreferenceGroup)) {
128
- throw new InvalidArgumentException (
129
- sprintf ("index: #%s name is required and needs to be a PreferenceGroup " , $ key )
130
- );
131
- }
132
- if (empty ($ preferenceData ['cast ' ]) || !($ preferenceData ['cast ' ] instanceof CastableEnum)) {
133
- throw new InvalidArgumentException (
134
- sprintf ("index: #%s cast is required and needs to implement 'CastableEnum' " , $ key )
135
- );
136
- }
137
- if (!empty ($ preferenceData ['rule ' ]) && !$ preferenceData ['rule ' ] instanceof ValidationRule) {
138
- throw new InvalidArgumentException (
139
- sprintf ("index: #%s validation rule musst implement ValidationRule " , $ key )
140
- );
141
- }
142
-
143
- if (!empty ($ preferenceData ['default_value ' ])) {
144
- ValidationHelper::validateValue (
145
- $ preferenceData ['default_value ' ],
146
- $ preferenceData ['cast ' ] ?? null ,
147
- $ preferenceData ['rule ' ] ?? null ,
148
- $ preferenceData ['nullable ' ],
149
- );
150
- }
151
-
152
-
153
- if (array_key_exists ('group ' , $ preferenceData )) {
154
- throw new InvalidArgumentException (
155
- sprintf ("index: #%s group has been deprecated " , $ key )
156
- );
157
- }
126
+ ValidationHelper::validatePreferenceData ($ preferenceData , $ index );
158
127
159
128
SerializeHelper::conformNameAndGroup ($ preferenceData ['name ' ], $ preferenceData ['group ' ]);
160
129
@@ -166,14 +135,14 @@ public static function initBulk(array $preferences, bool $nullable = false): voi
166
135
$ preferenceData ['default_value ' ] = $ valueCaster ->set (null , '' , $ preferenceData ['default_value ' ], []);
167
136
}
168
137
169
-
170
138
$ preferenceData ['cast ' ] = serialize ($ preferenceData ['cast ' ]);
171
139
172
140
// Ensure Defaults
173
141
$ preferenceData = array_merge ([
174
142
'group ' => 'general ' ,
175
143
'default_value ' => null ,
176
144
'description ' => '' ,
145
+ 'policy ' => null ,
177
146
'rule ' => null ,
178
147
'nullable ' => false ,
179
148
], $ preferenceData );
@@ -189,10 +158,10 @@ public static function deleteBulk(array $preferences): int
189
158
}
190
159
$ query = Preference::query ();
191
160
192
- foreach ($ preferences as $ key => $ preferenceData ) {
193
- if (empty ($ preferenceData ['name ' ])) {
161
+ foreach ($ preferences as $ index => $ preferenceData ) {
162
+ if (empty ($ preferenceData ['name ' ]) || !( $ preferenceData [ ' name ' ] instanceof PreferenceGroup) ) {
194
163
throw new InvalidArgumentException (
195
- sprintf ("index: #%s name is required " , $ key )
164
+ sprintf ("index: #%s name is required and must implement PreferenceGroup " , $ index )
196
165
);
197
166
}
198
167
0 commit comments