Skip to content

Commit

Permalink
docs: message required
Browse files Browse the repository at this point in the history
  • Loading branch information
askuzminov committed Sep 8, 2021
1 parent 6fb692b commit 9f732d5
Show file tree
Hide file tree
Showing 7 changed files with 33 additions and 11 deletions.
4 changes: 2 additions & 2 deletions proto/whisk/api/user/v2/optional.proto
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ syntax = "proto3";
package whisk.api.user.v2;

// Force required mode for messages in file
option message_required = true; // false for disable
option (messages_required) = true; // false for disable

message Test {
// Primitive
Expand Down Expand Up @@ -44,7 +44,7 @@ message Day {

message Week {
// Force required mode in message
option message_required = false; // false for disable
option (message_required) = false; // false for disable

int32 num = 1;
Day day = 2;
Expand Down
25 changes: 23 additions & 2 deletions readme.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
- [API](#api)
- [CLI](#cli)
- [Parser](#parser)
- [Issues with protoc](#issues-with-protoc)
- [GRPC](#grpc)
- [Setup gRPC instance](#setup-grpc-instance)
- [Sending requests](#sending-requests)
Expand Down Expand Up @@ -144,6 +145,26 @@ import { parser } from '@whisklabs/grpc';
const parsed = parser(readFileSync('some.proto', 'utf8'));
```

### Issues with protoc

For custom options add in start of file or in 'google/protobuf/descriptor.proto'

```protobuf
import "google/protobuf/descriptor.proto";
extend google.protobuf.FieldOptions {
bool required = 1001; // uniq number more 1000
}
extend google.protobuf.MessageOptions {
bool message_required = 1001; // uniq number more 1000
}
extend google.protobuf.FileOptions {
bool messages_required = 1001; // uniq number more 1000
}
```

For `optional` keyword use ptotoc 3.15+

## GRPC

The query library is a factory of endpoints, for simultaneous work with different API servers.
Expand Down Expand Up @@ -797,7 +818,7 @@ You can switch on **strict required mode for messages** with `optional` keyword:
package whisk.api.user.v2;

// Force required mode for messages in file
option message_required = true; // false for disable
option (messages_required) = true; // false for disable

message Test {}
```
Expand All @@ -811,7 +832,7 @@ You can switch on **strict required mode for messages** with `optional` keyword:

message Week {
// Force required mode in message
option message_required = true; // false for disable
option (message_required) = true; // false for disable

int32 num = 1;
Day day = 2;
Expand Down
1 change: 1 addition & 0 deletions src/generator/constants.ts
Original file line number Diff line number Diff line change
Expand Up @@ -30,4 +30,5 @@ export const GOOGLE_WRAPPERS: Record<string, string> = {
'google.protobuf.BytesValue': 'bytes',
};

export const OPTION_MESSAGES_REQUIRED = 'messages_required';
export const OPTION_MESSAGE_REQUIRED = 'message_required';
4 changes: 2 additions & 2 deletions src/generator/main.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ import { CompilerOptions, ModuleKind, ModuleResolutionKind, ScriptTarget, transp

import { Parser, parser } from '../parser';
import { collectEmuns, collectMessages, collectServices } from './collect';
import { OPTION_MESSAGE_REQUIRED } from './constants';
import { OPTION_MESSAGES_REQUIRED } from './constants';
import { enums } from './enum';
import { Config, MakeOuts, Out } from './generator';
import { messages } from './message';
Expand Down Expand Up @@ -159,7 +159,7 @@ export function make(schemas: Parser.Schema[], messageRequired?: boolean): MakeO
for (const schema of schemas) {
const path = schema.package ?? '';

const option = schema.options[OPTION_MESSAGE_REQUIRED];
const option = schema.options[OPTION_MESSAGES_REQUIRED];
const isMessageRequired = isBoolean(option) ? option : messageRequired;
messages(path, out, schema.messages, isMessageRequired, []);
services(path, out, schema.services);
Expand Down
2 changes: 1 addition & 1 deletion tests/proto/debug/whisk/api/user/v2/optional.json
Original file line number Diff line number Diff line change
Expand Up @@ -239,7 +239,7 @@
}
],
"options": {
"message_required": true
"messages_required": true
},
"extends": [],
"services": [],
Expand Down
4 changes: 2 additions & 2 deletions tests/protobufjs/json-module.js
Original file line number Diff line number Diff line change
Expand Up @@ -1325,7 +1325,7 @@ const $root = ($protobuf.roots["default"] || ($protobuf.roots["default"] = new $
nested: {
v2: {
options: {
message_required: true,
"(messages_required)": true,
go_package: "userv2",
java_package: "com.whisk.api.user.v2"
},
Expand Down Expand Up @@ -1431,7 +1431,7 @@ const $root = ($protobuf.roots["default"] || ($protobuf.roots["default"] = new $
},
Week: {
options: {
message_required: false
"(message_required)": false
},
fields: {
num: {
Expand Down
4 changes: 2 additions & 2 deletions tests/protobufjs/json.json
Original file line number Diff line number Diff line change
Expand Up @@ -1322,7 +1322,7 @@
"nested": {
"v2": {
"options": {
"message_required": true,
"(messages_required)": true,
"go_package": "userv2",
"java_package": "com.whisk.api.user.v2"
},
Expand Down Expand Up @@ -1428,7 +1428,7 @@
},
"Week": {
"options": {
"message_required": false
"(message_required)": false
},
"fields": {
"num": {
Expand Down

0 comments on commit 9f732d5

Please sign in to comment.