Skip to content

Commit 72f2c02

Browse files
committed
fix date-time
1 parent df79bdc commit 72f2c02

File tree

14 files changed

+339
-19
lines changed

14 files changed

+339
-19
lines changed

apps/web/app/routes/ws/resources.tsx

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -146,14 +146,16 @@ export default function Resources() {
146146
filteredResources?.map((resource) => (
147147
<TableRow key={resource.id}>
148148
<TableCell className="font-medium">
149+
{resource.name}
150+
</TableCell>
151+
<TableCell>
149152
<div>
150-
<div>{resource.name}</div>
153+
<div>{resource.kind}</div>
151154
<div className="text-xs text-muted-foreground">
152155
{resource.version}
153156
</div>
154157
</div>
155158
</TableCell>
156-
<TableCell>{resource.kind}</TableCell>
157159
<TableCell>
158160
<Badge
159161
variant="secondary"

apps/workspace-engine/oapi/openapi.json

Lines changed: 109 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -166,6 +166,7 @@
166166
"type": "object"
167167
},
168168
"createdAt": {
169+
"format": "date-time",
169170
"type": "string"
170171
},
171172
"deploymentId": {
@@ -1687,6 +1688,114 @@
16871688
"summary": "Get resources for a deployment"
16881689
}
16891690
},
1691+
"/v1/workspaces/{workspaceId}/deployments/{deploymentId}/versions": {
1692+
"get": {
1693+
"description": "Returns a list of releases for a deployment.",
1694+
"operationId": "getVersionsForDeployment",
1695+
"parameters": [
1696+
{
1697+
"description": "ID of the workspace",
1698+
"in": "path",
1699+
"name": "workspaceId",
1700+
"required": true,
1701+
"schema": {
1702+
"type": "string"
1703+
}
1704+
},
1705+
{
1706+
"description": "ID of the deployment",
1707+
"in": "path",
1708+
"name": "deploymentId",
1709+
"required": true,
1710+
"schema": {
1711+
"type": "string"
1712+
}
1713+
},
1714+
{
1715+
"description": "Maximum number of items to return",
1716+
"in": "query",
1717+
"name": "limit",
1718+
"required": false,
1719+
"schema": {
1720+
"default": 50,
1721+
"maximum": 1000,
1722+
"minimum": 1,
1723+
"type": "integer"
1724+
}
1725+
},
1726+
{
1727+
"description": "Number of items to skip",
1728+
"in": "query",
1729+
"name": "offset",
1730+
"required": false,
1731+
"schema": {
1732+
"default": 0,
1733+
"minimum": 0,
1734+
"type": "integer"
1735+
}
1736+
}
1737+
],
1738+
"responses": {
1739+
"200": {
1740+
"content": {
1741+
"application/json": {
1742+
"schema": {
1743+
"properties": {
1744+
"items": {
1745+
"items": {
1746+
"$ref": "#/components/schemas/DeploymentVersion"
1747+
},
1748+
"type": "array"
1749+
},
1750+
"limit": {
1751+
"description": "Maximum number of items returned",
1752+
"type": "integer"
1753+
},
1754+
"offset": {
1755+
"description": "Number of items skipped",
1756+
"type": "integer"
1757+
},
1758+
"total": {
1759+
"description": "Total number of items available",
1760+
"type": "integer"
1761+
}
1762+
},
1763+
"required": [
1764+
"items",
1765+
"total",
1766+
"limit",
1767+
"offset"
1768+
],
1769+
"type": "object"
1770+
}
1771+
}
1772+
},
1773+
"description": "Paginated list of items"
1774+
},
1775+
"400": {
1776+
"content": {
1777+
"application/json": {
1778+
"schema": {
1779+
"$ref": "#/components/schemas/ErrorResponse"
1780+
}
1781+
}
1782+
},
1783+
"description": "Invalid request"
1784+
},
1785+
"404": {
1786+
"content": {
1787+
"application/json": {
1788+
"schema": {
1789+
"$ref": "#/components/schemas/ErrorResponse"
1790+
}
1791+
}
1792+
},
1793+
"description": "Resource not found"
1794+
}
1795+
},
1796+
"summary": "Get versions for a deployment"
1797+
}
1798+
},
16901799
"/v1/workspaces/{workspaceId}/entities/{relatableEntityType}/{entityId}/relationships": {
16911800
"get": {
16921801
"description": "Returns all entities related to the specified entity (deployment, environment, or resource) based on relationship rules. Relationships are grouped by relationship reference.",

apps/workspace-engine/oapi/spec/paths/deployment.jsonnet

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -49,16 +49,18 @@ local openapi = import '../lib/openapi.libsonnet';
4949
+ openapi.badRequestResponse(),
5050
},
5151
},
52-
'/v1/workspaces/{workspaceId}/deployments/{deploymentId}/releases': {
52+
'/v1/workspaces/{workspaceId}/deployments/{deploymentId}/versions': {
5353
get: {
54-
summary: 'Get releases for a deployment',
55-
operationId: 'getReleasesForDeployment',
54+
summary: 'Get versions for a deployment',
55+
operationId: 'getVersionsForDeployment',
5656
description: 'Returns a list of releases for a deployment.',
5757
parameters: [
5858
openapi.workspaceIdParam(),
5959
openapi.deploymentIdParam(),
60+
openapi.limitParam(),
61+
openapi.offsetParam(),
6062
],
61-
responses: openapi.paginatedResponse(openapi.schemaRef('Release'))
63+
responses: openapi.paginatedResponse(openapi.schemaRef('DeploymentVersion'))
6264
+ openapi.notFoundResponse()
6365
+ openapi.badRequestResponse(),
6466
},

apps/workspace-engine/oapi/spec/schemas/entities.jsonnet

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -144,7 +144,7 @@ local openapi = import '../lib/openapi.libsonnet';
144144
deploymentId: { type: 'string' },
145145
status: openapi.schemaRef('DeploymentVersionStatus'),
146146
message: { type: 'string' },
147-
createdAt: { type: 'string' },
147+
createdAt: { type: 'string', format: 'date-time' },
148148
},
149149
},
150150

apps/workspace-engine/pkg/db/deployment_versions.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ func scanDeploymentVersion(rows pgx.Rows) (*oapi.DeploymentVersion, error) {
7777

7878
// Set status from string to enum
7979
deploymentVersion.Status = convertStatusToEnum(statusStr)
80-
deploymentVersion.CreatedAt = createdAt.Format(time.RFC3339)
80+
deploymentVersion.CreatedAt = createdAt
8181

8282
// Handle nullable message field
8383
if message != nil {

apps/workspace-engine/pkg/db/deployment_versions_test.go

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -42,9 +42,6 @@ func validateRetrievedDeploymentVersions(t *testing.T, actualVersions []*oapi.De
4242
t.Fatalf("expected deployment version status %v, got %v", expected.Status, actual.Status)
4343
}
4444
compareStrPtr(t, actual.Message, expected.Message)
45-
if actual.CreatedAt == "" {
46-
t.Fatalf("expected deployment version created_at to be set")
47-
}
4845

4946
// Validate config
5047
if expected.Config != nil {

apps/workspace-engine/pkg/oapi/oapi.gen.go

Lines changed: 66 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

apps/workspace-engine/pkg/server/openapi/deployments/server.go

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package deployments
22

33
import (
44
"net/http"
5+
"sort"
56
"workspace-engine/pkg/oapi"
67
"workspace-engine/pkg/server/openapi/utils"
78

@@ -168,3 +169,47 @@ func (s *Deployments) GetReleaseTargetsForDeployment(c *gin.Context, workspaceId
168169
"items": releaseTargetsList[start:end],
169170
})
170171
}
172+
173+
func (s *Deployments) GetVersionsForDeployment(c *gin.Context, workspaceId string, deploymentId string, params oapi.GetVersionsForDeploymentParams) {
174+
ws, err := utils.GetWorkspace(c, workspaceId)
175+
if err != nil {
176+
c.JSON(http.StatusInternalServerError, gin.H{
177+
"error": err.Error(),
178+
})
179+
return
180+
}
181+
182+
versions := ws.DeploymentVersions().Items()
183+
versionsList := make([]*oapi.DeploymentVersion, 0, len(versions))
184+
for _, version := range versions {
185+
if version.DeploymentId == deploymentId {
186+
versionsList = append(versionsList, version)
187+
}
188+
}
189+
190+
limit := 50
191+
if params.Limit != nil {
192+
limit = *params.Limit
193+
}
194+
195+
offset := 0
196+
if params.Offset != nil {
197+
offset = *params.Offset
198+
}
199+
200+
total := len(versionsList)
201+
start := min(offset, total)
202+
end := min(start+limit, total)
203+
204+
// Sort versionsList by CreatedAt ascending
205+
sort.Slice(versionsList, func(i, j int) bool {
206+
return versionsList[i].CreatedAt.Before(versionsList[j].CreatedAt)
207+
})
208+
209+
c.JSON(http.StatusOK, gin.H{
210+
"total": total,
211+
"offset": offset,
212+
"limit": limit,
213+
"items": versionsList[start:end],
214+
})
215+
}

apps/workspace-engine/pkg/workspace/releasemanager/policy/evaluator/environmentprogression/environmentprogression_test.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,7 @@ func TestEnvironmentProgressionEvaluator_VersionNotInDependency(t *testing.T) {
103103
Tag: "v1.0.0",
104104
DeploymentId: "deploy-1",
105105
Status: oapi.DeploymentVersionStatusReady,
106-
CreatedAt: time.Now().Format(time.RFC3339),
106+
CreatedAt: time.Now(),
107107
}
108108

109109
releaseTarget := &oapi.ReleaseTarget{
@@ -144,7 +144,7 @@ func TestEnvironmentProgressionEvaluator_VersionSuccessfulInDependency(t *testin
144144
Tag: "v1.0.0",
145145
DeploymentId: "deploy-1",
146146
Status: oapi.DeploymentVersionStatusReady,
147-
CreatedAt: time.Now().Format(time.RFC3339),
147+
CreatedAt: time.Now(),
148148
}
149149
st.DeploymentVersions.Upsert(ctx, version.Id, version)
150150

@@ -234,7 +234,7 @@ func TestEnvironmentProgressionEvaluator_SoakTimeNotMet(t *testing.T) {
234234
Tag: "v1.0.0",
235235
DeploymentId: "deploy-1",
236236
Status: oapi.DeploymentVersionStatusReady,
237-
CreatedAt: time.Now().Format(time.RFC3339),
237+
CreatedAt: time.Now(),
238238
}
239239
st.DeploymentVersions.Upsert(ctx, version.Id, version)
240240

@@ -351,7 +351,7 @@ func TestEnvironmentProgressionEvaluator_NoMatchingEnvironments(t *testing.T) {
351351
Tag: "v1.0.0",
352352
DeploymentId: "deploy-1",
353353
Status: oapi.DeploymentVersionStatusReady,
354-
CreatedAt: time.Now().Format(time.RFC3339),
354+
CreatedAt: time.Now(),
355355
}
356356

357357
releaseTarget := &oapi.ReleaseTarget{

apps/workspace-engine/pkg/workspace/releasemanager/targets/taint_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ func createTestDeployment(id, systemID, name string) *oapi.Deployment {
3939
}
4040

4141
func createTestDeploymentVersion(id, deploymentID, tag string) *oapi.DeploymentVersion {
42-
now := time.Now().Format(time.RFC3339)
42+
now := time.Now()
4343
return &oapi.DeploymentVersion{
4444
Id: id,
4545
DeploymentId: deploymentID,

0 commit comments

Comments
 (0)