This is an automated email from the ASF dual-hosted git repository.

rfu pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/pulsar-client-go.git


The following commit(s) were added to refs/heads/master by this push:
     new 148c10c4 add timestamp to schema info (#1436)
148c10c4 is described below

commit 148c10c41f37ee1e15bb66d7ba09d2a8984b87b0
Author: Rui Fu <[email protected]>
AuthorDate: Thu Nov 6 23:52:32 2025 +0800

    add timestamp to schema info (#1436)
    
    * add timestamp to schemainfo
    
    * add tests
---
 pulsaradmin/pkg/admin/schema_test.go      |   2 +
 pulsaradmin/pkg/utils/schema_util.go      |   2 +
 pulsaradmin/pkg/utils/schema_util_test.go | 104 ++++++++++++++++++++++++++++++
 3 files changed, 108 insertions(+)

diff --git a/pulsaradmin/pkg/admin/schema_test.go 
b/pulsaradmin/pkg/admin/schema_test.go
index a29fad12..dc7c1658 100644
--- a/pulsaradmin/pkg/admin/schema_test.go
+++ b/pulsaradmin/pkg/admin/schema_test.go
@@ -120,6 +120,8 @@ func TestSchemas_CreateSchemaBySchemaInfo(t *testing.T) {
        info, err := admin.Schemas().GetSchemaInfo(topic)
        assert.NoError(t, err)
        assert.Equal(t, schemaInfo.Type, info.Type)
+       assert.NotNil(t, info.Timestamp)
+       assert.NotZero(t, info.Timestamp)
 
        version, err := admin.Schemas().GetVersionBySchemaInfo(topic, 
schemaInfo)
        assert.NoError(t, err)
diff --git a/pulsaradmin/pkg/utils/schema_util.go 
b/pulsaradmin/pkg/utils/schema_util.go
index b8a17d96..0ad14f5b 100644
--- a/pulsaradmin/pkg/utils/schema_util.go
+++ b/pulsaradmin/pkg/utils/schema_util.go
@@ -22,6 +22,7 @@ type SchemaInfo struct {
        Schema     []byte            `json:"schema"`
        Type       string            `json:"type"`
        Properties map[string]string `json:"properties"`
+       Timestamp  int64             `json:"timestamp,omitempty"`
 }
 
 type SchemaInfoWithVersion struct {
@@ -64,6 +65,7 @@ func ConvertGetSchemaResponseToSchemaInfo(tn *TopicName, 
response GetSchemaRespo
        info.Type = response.Type
        info.Properties = response.Properties
        info.Name = tn.GetLocalName()
+       info.Timestamp = response.Timestamp
 
        return info
 }
diff --git a/pulsaradmin/pkg/utils/schema_util_test.go 
b/pulsaradmin/pkg/utils/schema_util_test.go
new file mode 100644
index 00000000..84a90929
--- /dev/null
+++ b/pulsaradmin/pkg/utils/schema_util_test.go
@@ -0,0 +1,104 @@
+// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements.  See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership.  The ASF licenses this file
+// to you under the Apache License, Version 2.0 (the
+// "License"); you may not use this file except in compliance
+// with the License.  You may obtain a copy of the License at
+//
+//   http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing,
+// software distributed under the License is distributed on an
+// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+// KIND, either express or implied.  See the License for the
+// specific language governing permissions and limitations
+// under the License.
+
+package utils
+
+import (
+       "testing"
+
+       "github.com/stretchr/testify/require"
+)
+
+func TestConvertGetSchemaResponseToSchemaInfoTimestamp(t *testing.T) {
+       topicName, err := GetTopicName("persistent://tenant/ns/topic")
+       require.NoError(t, err)
+
+       props := map[string]string{"key": "value"}
+       response := GetSchemaResponse{
+               Version:    3,
+               Type:       "STRING",
+               Timestamp:  123456789,
+               Data:       "payload",
+               Properties: props,
+       }
+
+       info := ConvertGetSchemaResponseToSchemaInfo(topicName, response)
+       require.NotNil(t, info)
+       require.Equal(t, "topic", info.Name)
+       require.Equal(t, []byte("payload"), info.Schema)
+       require.Equal(t, "STRING", info.Type)
+       require.Equal(t, props, info.Properties)
+       require.Equal(t, int64(123456789), info.Timestamp)
+}
+
+func TestConvertGetSchemaResponseToSchemaInfoWithVersionTimestamp(t 
*testing.T) {
+       topicName, err := GetTopicName("persistent://tenant/ns/topic")
+       require.NoError(t, err)
+
+       response := GetSchemaResponse{
+               Version:   9,
+               Type:      "JSON",
+               Timestamp: 987654321,
+               Data:      "{}",
+               Properties: map[string]string{
+                       "schema": "json",
+               },
+       }
+
+       infoWithVersion := 
ConvertGetSchemaResponseToSchemaInfoWithVersion(topicName, response)
+       require.NotNil(t, infoWithVersion)
+       require.Equal(t, int64(9), infoWithVersion.Version)
+       require.NotNil(t, infoWithVersion.SchemaInfo)
+       require.Equal(t, "topic", infoWithVersion.SchemaInfo.Name)
+       require.Equal(t, "JSON", infoWithVersion.SchemaInfo.Type)
+       require.Equal(t, int64(987654321), infoWithVersion.SchemaInfo.Timestamp)
+}
+
+func TestConvertGetAllSchemasResponseToSchemaInfosWithVersionTimestamp(t 
*testing.T) {
+       topicName, err := GetTopicName("persistent://tenant/ns/topic")
+       require.NoError(t, err)
+
+       response := GetAllSchemasResponse{
+               Schemas: []GetSchemaResponse{
+                       {
+                               Version:    1,
+                               Type:       "AVRO",
+                               Timestamp:  1000,
+                               Data:       "schema-1",
+                               Properties: map[string]string{"idx": "1"},
+                       },
+                       {
+                               Version:    2,
+                               Type:       "PROTOBUF",
+                               Timestamp:  2000,
+                               Data:       "schema-2",
+                               Properties: map[string]string{"idx": "2"},
+                       },
+               },
+       }
+
+       infos := 
ConvertGetAllSchemasResponseToSchemaInfosWithVersion(topicName, response)
+       require.Len(t, infos, 2)
+
+       require.Equal(t, int64(1), infos[0].Version)
+       require.NotNil(t, infos[0].SchemaInfo)
+       require.Equal(t, int64(1000), infos[0].SchemaInfo.Timestamp)
+
+       require.Equal(t, int64(2), infos[1].Version)
+       require.NotNil(t, infos[1].SchemaInfo)
+       require.Equal(t, int64(2000), infos[1].SchemaInfo.Timestamp)
+}

Reply via email to