diff --git a/lib/asset/function.proto b/lib/asset/function.proto index 8e0d5243..6d49b347 100644 --- a/lib/asset/function.proto +++ b/lib/asset/function.proto @@ -52,6 +52,7 @@ message Function { map inputs = 17; map outputs = 18; FunctionStatus status = 19; + Addressable image = 20; } // NewFunction is used to register an Function. diff --git a/lib/asset/function_validation.go b/lib/asset/function_validation.go index 559a56ee..cddbb19c 100644 --- a/lib/asset/function_validation.go +++ b/lib/asset/function_validation.go @@ -20,6 +20,7 @@ func (a *NewFunction) Validate() error { validation.Field(&a.NewPermissions, validation.Required), validation.Field(&a.Inputs, validation.By(validateInputs)), validation.Field(&a.Outputs, validation.By(validateOutputs)), + // validation.Field(&a.Image, validation.Required), ) } diff --git a/server/standalone/dbal/function.go b/server/standalone/dbal/function.go index 55f97fb3..a7eef1df 100644 --- a/server/standalone/dbal/function.go +++ b/server/standalone/dbal/function.go @@ -23,6 +23,7 @@ type sqlFunction struct { CreationDate time.Time Metadata map[string]string Status asset.FunctionStatus + Image asset.Addressable } func (a *sqlFunction) toFunction() *asset.Function { @@ -36,6 +37,7 @@ func (a *sqlFunction) toFunction() *asset.Function { CreationDate: timestamppb.New(a.CreationDate), Metadata: a.Metadata, Status: a.Status, + Image: &a.Image, } } @@ -51,10 +53,15 @@ func (d *DBAL) AddFunction(function *asset.Function) error { return err } + err = d.addAddressable(function.Image) + if err != nil { + return err + } + stmt := getStatementBuilder(). Insert("functions"). Columns("key", "channel", "name", "description", "functionAddress", "permissions", "owner", "creation_date", "metadata", "status"). - Values(function.Key, d.channel, function.Name, function.Description.StorageAddress, function.Archive.StorageAddress, function.Permissions, function.Owner, function.CreationDate.AsTime(), function.Metadata, function.Status.String()) + Values(function.Key, d.channel, function.Name, function.Description.StorageAddress, function.Archive.StorageAddress, function.Permissions, function.Owner, function.CreationDate.AsTime(), function.Metadata, function.Status.String(), function.Image.StorageAddress) err = d.exec(stmt) if err != nil { @@ -87,7 +94,7 @@ func (d *DBAL) GetFunction(key string) (*asset.Function, error) { } al := sqlFunction{} - err = row.Scan(&al.Key, &al.Name, &al.Description.StorageAddress, &al.Description.Checksum, &al.Archive.StorageAddress, &al.Archive.Checksum, &al.Permissions, &al.Owner, &al.CreationDate, &al.Metadata, &al.Status) + err = row.Scan(&al.Key, &al.Name, &al.Description.StorageAddress, &al.Description.Checksum, &al.Archive.StorageAddress, &al.Archive.Checksum, &al.Permissions, &al.Owner, &al.CreationDate, &al.Metadata, &al.Status, &al.Image.StorageAddress, &al.Image.Checksum) if err != nil { if errors.Is(err, pgx.ErrNoRows) { @@ -175,7 +182,7 @@ func (d *DBAL) queryFunctions(p *common.Pagination, filter *asset.FunctionQueryF for rows.Next() { al := sqlFunction{} - err = rows.Scan(&al.Key, &al.Name, &al.Description.StorageAddress, &al.Description.Checksum, &al.Archive.StorageAddress, &al.Archive.Checksum, &al.Permissions, &al.Owner, &al.CreationDate, &al.Metadata, &al.Status) + err = rows.Scan(&al.Key, &al.Name, &al.Description.StorageAddress, &al.Description.Checksum, &al.Archive.StorageAddress, &al.Archive.Checksum, &al.Permissions, &al.Owner, &al.CreationDate, &al.Metadata, &al.Status, &al.Image.StorageAddress, &al.Image.Checksum) if err != nil { return nil, "", err }