Skip to content

Commit fe06d3a

Browse files
authored
docs: Adds the projections for the Go and Python clients
1 parent 98cdbb3 commit fe06d3a

File tree

1 file changed

+42
-27
lines changed

1 file changed

+42
-27
lines changed

docs/clients/grpc/projections.md

Lines changed: 42 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,6 @@ title: Projections
77

88
The various gRPC client APIs include dedicated clients that allow you to manage projections.
99

10-
::: warning
11-
Currently not all clients fully expose all operations.
12-
:::
13-
1410
For a detailed explanation of projections, see the [server documentation](@server/features/projections/README.md).
1511

1612
You can find the full sample code from this documentation page in the respective [clients repositories](https://github.com/kurrent-io/?q=client).
@@ -70,129 +66,148 @@ For .NET projects, install the `EventStore.Client.Grpc.ProjectionManagement` pac
7066
dotnet add package EventStore.Client.Grpc.ProjectionManagement --version 23.*
7167
```
7268

73-
### Other languages
69+
### Python
70+
71+
Install the `kurrentdbclient` package from PyPI or use Poetry:
72+
73+
::: tabs
74+
@tab pip
75+
```bash
76+
pip install kurrentdbclient
77+
```
78+
@tab Poetry
79+
```bash
80+
poetry add kurrentdbclient
81+
```
82+
:::
83+
84+
### Go
7485

75-
Go, Rust and Python clients does not have a dedicated projection management client yet.
86+
Install the `kurrentdb` package using Go modules:
87+
88+
```bash
89+
go get github.com/kurrent-io/KurrentDB-Client-Go/kurrentdb
90+
```
7691

7792
## Creating a client
7893

7994
Projection management operations are exposed through a dedicated client.
8095

81-
@[code{createClient}](@grpc:projection-management.js;projection-management.ts;quickstart.py;projection_management/ProjectionManagement.java;projection-management/Program.cs)
96+
@[code{createClient}](@grpc:projection-management.js;projection-management.ts;quickstart.py;projection_management/ProjectionManagement.java;projection-management/Program.cs;quickstart.py;projectionManagement.go)
8297

8398
## Create a projection
8499

85100
Creates a projection that runs until the last event in the store, and then continues processing new events as they are appended to the store. The query parameter contains the JavaScript you want created as a projection.
86101
Projections have explicit names, and you can enable or disable them via this name.
87102

88-
@[code{CreateContinuous}](@grpc:projection-management.js;projection-management.ts;projection_management/ProjectionManagement.java;projection-management/Program.cs)
103+
@[code{CreateContinuous}](@grpc:projection-management.js;projection-management.ts;projection_management/ProjectionManagement.java;projection-management/Program.cs;projections.py;projectionManagement.go)
89104

90105
Trying to create projections with the same name will result in an error:
91106

92-
@[code{CreateContinuous_Conflict}](@grpc:projection-management.js;projection-management.ts;projection_management/ProjectionManagement.java;projection-management/Program.cs)
107+
@[code{CreateContinuous_Conflict}](@grpc:projection-management.js;projection-management.ts;projection_management/ProjectionManagement.java;projection-management/Program.cs;projections.py;projectionManagement.go)
93108

94109
## Restart the subsystem
95110

96111
It is possible to restart the entire projection subsystem using the projections management client API. The user must be in the `$ops` or `$admin` group to perform this operation.
97112

98-
@[code{RestartSubSystem}](@grpc:projection-management.js;projection-management.ts;projection_management/ProjectionManagement.java;projection-management/Program.cs)
113+
@[code{RestartSubSystem}](@grpc:projection-management.js;projection-management.ts;projection_management/ProjectionManagement.java;projection-management/Program.cs;projections.py;projectionManagement.go)
99114

100115
## Enable a projection
101116

102117
Enables an existing projection by name.
103118
Once enabled, the projection will start to process events even after restarting the server or the projection subsystem.
104119
You must have access to a projection to enable it, see the [ACL documentation](@server/security/user-authorization.md).
105120

106-
@[code{Enable}](@grpc:projection-management.js;projection-management.ts;projection_management/ProjectionManagement.java;projection-management/Program.cs)
121+
@[code{Enable}](@grpc:projection-management.js;projection-management.ts;projection_management/ProjectionManagement.java;projection-management/Program.cs;projections.py;projectionManagement.go)
107122

108123
You can only enable an existing projection. When you try to enable a non-existing projection, you'll get an error:
109124

110-
@[code{EnableNotFound}](@grpc:projection-management.js;projection-management.ts;projection_management/ProjectionManagement.java;projection-management/Program.cs)
125+
@[code{EnableNotFound}](@grpc:projection-management.js;projection-management.ts;projection_management/ProjectionManagement.java;projection-management/Program.cs;projections.py;projectionManagement.go)
111126

112127
## Disable a projection
113128

114129
Disables a projection, this will save the projection checkpoint.
115130
Once disabled, the projection will not process events even after restarting the server or the projection subsystem.
116131
You must have access to a projection to disable it, see the [ACL documentation](@server/security/user-authorization.md).
117132

118-
@[code{Disable}](@grpc:projection-management.js;projection-management.ts;projection_management/ProjectionManagement.java;projection-management/Program.cs)
133+
@[code{Disable}](@grpc:projection-management.js;projection-management.ts;projection_management/ProjectionManagement.java;projection-management/Program.cs;projections.py;projectionManagement.go)
119134

120135
You can only disable an existing projection. When you try to disable a non-existing projection, you'll get an error:
121136

122-
@[code{DisableNotFound}](@grpc:projection-management.js;projection-management.ts;projection_management/ProjectionManagement.java;projection-management/Program.cs)
137+
@[code{DisableNotFound}](@grpc:projection-management.js;projection-management.ts;projection_management/ProjectionManagement.java;projection-management/Program.cs;projections.py;projectionManagement.go)
123138

124139
## Delete a projection
125140

126141
Deletes an existing projection. You must disable the projection before deleting it, running projections cannot be deleted. Deleting a projection includes deleting the checkpoint and the emitted streams.
127142

128-
@[code{Delete}](@grpc:projection-management.js;projection-management.ts;projection_management/ProjectionManagement.java;projection-management/Program.cs)
143+
@[code{Delete}](@grpc:projection-management.js;projection-management.ts;projection_management/ProjectionManagement.java;projection-management/Program.cs;projections.py;projectionManagement.go)
129144

130145
You can only delete an existing projection. When you try to delete a non-existing projection, you'll get an error:
131146

132-
@[code{DeleteNotFound}](@grpc:projection-management.js;projection-management.ts;projection_management/ProjectionManagement.java)
147+
@[code{DeleteNotFound}](@grpc:projection-management.js;projection-management.ts;projection_management/ProjectionManagement.java;projections.py;projectionManagement.go)
133148

134149
## Abort a projection
135150

136151
Aborts a projection, this will not save the projection's checkpoint.
137152

138-
@[code{Abort}](@grpc:projection-management.js;projection-management.ts;projection_management/ProjectionManagement.java;projection-management/Program.cs)
153+
@[code{Abort}](@grpc:projection-management.js;projection-management.ts;projection_management/ProjectionManagement.java;projection-management/Program.cs;projections.py;projectionManagement.go)
139154

140155
You can only abort an existing projection. When you try to abort a non-existing projection, you'll get an error:
141156

142-
@[code{Abort_NotFound}](@grpc:projection-management.js;projection-management.ts;projection_management/ProjectionManagement.java;projection-management/Program.cs)
157+
@[code{Abort_NotFound}](@grpc:projection-management.js;projection-management.ts;projection_management/ProjectionManagement.java;projection-management/Program.cs;projections.py;projectionManagement.go)
143158

144159
## Reset a projection
145160

146161
Resets a projection, which causes deleting the projection checkpoint. This will force the projection to start afresh and re-emit events. Streams that are written to from the projection will also be soft-deleted.
147162

148-
@[code{Reset}](@grpc:projection-management.js;projection-management.ts;projection_management/ProjectionManagement.java;projection-management/Program.cs)
163+
@[code{Reset}](@grpc:projection-management.js;projection-management.ts;projection_management/ProjectionManagement.java;projection-management/Program.cs;projections.py;projectionManagement.go)
149164

150165
Resetting a projection that does not exist will result in an error.
151166

152-
@[code{Reset_NotFound}](@grpc:projection-management.js;projection-management.ts;projection_management/ProjectionManagement.java;projection-management/Program.cs)
167+
@[code{Reset_NotFound}](@grpc:projection-management.js;projection-management.ts;projection_management/ProjectionManagement.java;projection-management/Program.cs;projections.py;projectionManagement.go)
153168

154169
## Update a projection
155170

156171
Updates a projection with a given name. The query parameter contains the new JavaScript. Updating system projections using this operation is not supported at the moment.
157172

158-
@[code{Update}](@grpc:projection-management.js;projection-management.ts;projection_management/ProjectionManagement.java;projection-management/Program.cs)
173+
@[code{Update}](@grpc:projection-management.js;projection-management.ts;projection_management/ProjectionManagement.java;projection-management/Program.cs;projections.py;projectionManagement.go)
159174

160175
You can only update an existing projection. When you try to update a non-existing projection, you'll get an error:
161176

162-
@[code{Update_NotFound}](@grpc:projection-management.js;projection-management.ts;projection_management/ProjectionManagement.java;projection-management/Program.cs)
177+
@[code{Update_NotFound}](@grpc:projection-management.js;projection-management.ts;projection_management/ProjectionManagement.java;projection-management/Program.cs;projections.py;projectionManagement.go)
163178

164179
## List all projections
165180

166181
Returns a list of all projections, user defined & system projections.
167182
See the [projection details](#projection-details) section for an explanation of the returned values.
168183

169-
@[code{ListAll}](@grpc:projection-management.js;projection-management.ts;projection_management/ProjectionManagement.java;projection-management/Program.cs)
184+
@[code{ListAll}](@grpc:projection-management.js;projection-management.ts;projection_management/ProjectionManagement.java;projection-management/Program.cs;projections.py;projectionManagement.go)
170185

171186
## List continuous projections
172187

173188
Returns a list of all continuous projections.
174189
See the [projection details](#projection-details) section for an explanation of the returned values.
175190

176-
@[code{ListContinuous}](@grpc:projection-management.js;projection-management.ts;projection_management/ProjectionManagement.java;projection-management/Program.cs)
191+
@[code{ListContinuous}](@grpc:projection-management.js;projection-management.ts;projection_management/ProjectionManagement.java;projection-management/Program.cs;projections.py;projectionManagement.go)
177192

178193
## Get status
179194

180195
Gets the status of a named projection.
181196
See the [projection details](#projection-details) section for an explanation of the returned values.
182197

183-
@[code{GetStatus}](@grpc:projection-management.js;projection-management.ts;projection_management/ProjectionManagement.java;projection-management/Program.cs)
198+
@[code{GetStatus}](@grpc:projection-management.js;projection-management.ts;projection_management/ProjectionManagement.java;projection-management/Program.cs;projections.py;projectionManagement.go)
184199

185200
## Get state
186201

187202
Retrieves the state of a projection.
188203

189-
@[code{GetState}](@grpc:projection-management.js;projection-management.ts;projection_management/ProjectionManagement.java;projection-management/Program.cs)
204+
@[code{GetState}](@grpc:projection-management.js;projection-management.ts;projection_management/ProjectionManagement.java;projection-management/Program.cs;projections.py;projectionManagement.go)
190205

191206
## Get result
192207

193208
Retrieves the result of the named projection and partition.
194209

195-
@[code{GetResult}](@grpc:projection-management.js;projection-management.ts;projection_management/ProjectionManagement.java;projection-management/Program.cs)
210+
@[code{GetResult}](@grpc:projection-management.js;projection-management.ts;projection_management/ProjectionManagement.java;projection-management/Program.cs;projections.py;projectionManagement.go)
196211

197212
## Projection Details
198213

0 commit comments

Comments
 (0)