mirror of
https://github.com/pocketbase/pocketbase.git
synced 2026-08-02 11:29:30 -04:00
allow passing noninitialized *filesystem.File values
This commit is contained in:
@@ -732,12 +732,16 @@ func (f *FileField) toSliceValue(raw any) []any {
|
||||
case nil:
|
||||
// nothing to cast
|
||||
case *filesystem.File:
|
||||
result = append(result, value)
|
||||
if value != nil {
|
||||
result = append(result, value)
|
||||
}
|
||||
case filesystem.File:
|
||||
result = append(result, &value)
|
||||
case []*filesystem.File:
|
||||
for _, v := range value {
|
||||
result = append(result, v)
|
||||
if v != nil {
|
||||
result = append(result, v)
|
||||
}
|
||||
}
|
||||
case []filesystem.File:
|
||||
for _, v := range value {
|
||||
|
||||
@@ -103,6 +103,8 @@ func TestFileFieldPrepareValue(t *testing.T) {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
var nilFile *filesystem.File
|
||||
|
||||
scenarios := []struct {
|
||||
raw any
|
||||
field *core.FileField
|
||||
@@ -114,8 +116,9 @@ func TestFileFieldPrepareValue(t *testing.T) {
|
||||
{123, &core.FileField{MaxSelect: 1}, `"123"`},
|
||||
{"a", &core.FileField{MaxSelect: 1}, `"a"`},
|
||||
{`["a"]`, &core.FileField{MaxSelect: 1}, `"a"`},
|
||||
{*f1, &core.FileField{MaxSelect: 1}, string(f1Raw)},
|
||||
{f1, &core.FileField{MaxSelect: 1}, string(f1Raw)},
|
||||
{*f1, &core.FileField{MaxSelect: 1}, string(f1Raw)},
|
||||
{nilFile, &core.FileField{MaxSelect: 1}, `""`},
|
||||
{[]string{}, &core.FileField{MaxSelect: 1}, `""`},
|
||||
{[]string{"a", "b"}, &core.FileField{MaxSelect: 1}, `"b"`},
|
||||
|
||||
@@ -126,8 +129,9 @@ func TestFileFieldPrepareValue(t *testing.T) {
|
||||
{"a", &core.FileField{MaxSelect: 2}, `["a"]`},
|
||||
{`["a"]`, &core.FileField{MaxSelect: 2}, `["a"]`},
|
||||
{[]any{f1}, &core.FileField{MaxSelect: 2}, `[` + string(f1Raw) + `]`},
|
||||
{[]*filesystem.File{f1}, &core.FileField{MaxSelect: 2}, `[` + string(f1Raw) + `]`},
|
||||
{[]filesystem.File{*f1}, &core.FileField{MaxSelect: 2}, `[` + string(f1Raw) + `]`},
|
||||
{[]*filesystem.File{f1}, &core.FileField{MaxSelect: 2}, `[` + string(f1Raw) + `]`},
|
||||
{[]any{nilFile, f1}, &core.FileField{MaxSelect: 2}, `[` + string(f1Raw) + `]`},
|
||||
{[]string{}, &core.FileField{MaxSelect: 2}, `[]`},
|
||||
{[]string{"a", "b", "c"}, &core.FileField{MaxSelect: 2}, `["a","b","c"]`},
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user