summaryrefslogtreecommitdiff
path: root/table.proto
blob: 3999482e15d2367ccecb51f28ef9a5088d58e130 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
syntax = "proto3";

// playing around with ideas here

package gitpb;

import "google/protobuf/timestamp.proto"; // Import the well-known type for Timestamp
import "google/protobuf/any.proto"; // Import the well-known type for Timestamp
import "widget.proto"; // Import the well-known type for Timestamp

//
// this code was written this way to make it easy for me
// to originally implement and auto generate the needed code
// with autogenpb
//

// experiments in various options. think about this more.

message ColAttr {
        enum VarType {
                ANY = 0;
                INT = 1;
                STRING = 2;
                TIME = 3;
                DURATION = 4;
                BYTES = 5;
        }
        int32                                pad            = 1;
        int32                                width          = 2;
        bool                                 click          = 3;
        VarType                              type           = 4;
}
message StringCol {
        Widget                               header         = 1;
        repeated Widget                      widgets        = 2;
        ColAttr                              attr           = 3;
        repeated string                      vals           = 4;  // deprecate
}

message ButtonCol {
        Widget                               header         = 1;
        repeated Widget                      widgets        = 2;
        ColAttr                              attr           = 3;
        repeated string                      vals           = 4;  // deprecate
}

message IntCol {
        Widget                               header         = 1;
        repeated Widget                      widgets        = 2;
        ColAttr                              attr           = 3;
        repeated int64                       vals           = 4;  // deprecate
}

message TimeCol {
        Widget                               header         = 1;
        repeated Widget                      widgets        = 2;
        ColAttr                              attr           = 3;
        repeated google.protobuf.Timestamp   vals           = 4;  // deprecate
}

message BoolCol {
        Widget                               header         = 1;
        repeated Widget                      widgets        = 2;
        ColAttr                              attr           = 3;
        repeated bool                        vals           = 4;  // deprecate
}

message AnyCol {
        Widget                               header         = 1;
        repeated Widget                      widgets        = 2;
        ColAttr                              attr           = 3;
        repeated google.protobuf.Any         vals           = 4;  // deprecate
}

message Table {                                                   // `autogenpb:marshal`
        string                               uuid           = 1;
        string                               title          = 2;
        Widget                               parent         = 3;
        Widget                               grid           = 4;
        repeated string                      order          = 5;
        repeated StringCol                   stringCols     = 6;
        repeated IntCol                      intCols        = 7;
        repeated TimeCol                     timeCols       = 8;
        repeated BoolCol                     boolCols       = 9;
        repeated ButtonCol                   buttonCols     = 10;
        repeated AnyCol                      anyCols        = 11;
        int64                                height         = 12; // the number of rows
}

message Tables {                                                  // `autogenpb:marshal`
        string                               uuid           = 1;  // `autogenpb:uuid:c328aa62-3c4f-4d00-9244-cc44ae75ab1b`
        string                               version        = 2;  // `autogenpb:version:v1`
        repeated Table                       Tables         = 3;
}