diff --git a/ent/migrate/schema.go b/ent/migrate/schema.go index 5de0031..b360246 100644 --- a/ent/migrate/schema.go +++ b/ent/migrate/schema.go @@ -57,10 +57,11 @@ var ( {Name: "id", Type: field.TypeInt, Increment: true}, {Name: "username", Type: field.TypeString, Unique: true, Size: 100}, {Name: "did", Type: field.TypeString, Nullable: true}, + {Name: "token", Type: field.TypeString, Nullable: true}, {Name: "password", Type: field.TypeString}, {Name: "created_at", Type: field.TypeTime, Nullable: true}, {Name: "updated_at", Type: field.TypeTime, Nullable: true}, - {Name: "next", Type: field.TypeString, Nullable: true, Default: "20230414"}, + {Name: "next", Type: field.TypeString, Nullable: true, Default: "20230418"}, {Name: "group_users", Type: field.TypeInt, Nullable: true}, } // UsersTable holds the schema information for the "users" table. @@ -71,7 +72,7 @@ var ( ForeignKeys: []*schema.ForeignKey{ { Symbol: "users_groups_users", - Columns: []*schema.Column{UsersColumns[7]}, + Columns: []*schema.Column{UsersColumns[8]}, RefColumns: []*schema.Column{GroupsColumns[0]}, OnDelete: schema.SetNull, }, diff --git a/ent/mutation.go b/ent/mutation.go index dbcd32c..cc30859 100644 --- a/ent/mutation.go +++ b/ent/mutation.go @@ -1344,6 +1344,7 @@ type UserMutation struct { id *int username *string did *string + token *string password *string created_at *time.Time updated_at *time.Time @@ -1540,6 +1541,55 @@ func (m *UserMutation) ResetDid() { delete(m.clearedFields, user.FieldDid) } +// SetToken sets the "token" field. +func (m *UserMutation) SetToken(s string) { + m.token = &s +} + +// Token returns the value of the "token" field in the mutation. +func (m *UserMutation) Token() (r string, exists bool) { + v := m.token + if v == nil { + return + } + return *v, true +} + +// OldToken returns the old "token" field's value of the User entity. +// If the User object wasn't provided to the builder, the object is fetched from the database. +// An error is returned if the mutation operation is not UpdateOne, or the database query fails. +func (m *UserMutation) OldToken(ctx context.Context) (v string, err error) { + if !m.op.Is(OpUpdateOne) { + return v, errors.New("OldToken is only allowed on UpdateOne operations") + } + if m.id == nil || m.oldValue == nil { + return v, errors.New("OldToken requires an ID field in the mutation") + } + oldValue, err := m.oldValue(ctx) + if err != nil { + return v, fmt.Errorf("querying old value for OldToken: %w", err) + } + return oldValue.Token, nil +} + +// ClearToken clears the value of the "token" field. +func (m *UserMutation) ClearToken() { + m.token = nil + m.clearedFields[user.FieldToken] = struct{}{} +} + +// TokenCleared returns if the "token" field was cleared in this mutation. +func (m *UserMutation) TokenCleared() bool { + _, ok := m.clearedFields[user.FieldToken] + return ok +} + +// ResetToken resets all changes to the "token" field. +func (m *UserMutation) ResetToken() { + m.token = nil + delete(m.clearedFields, user.FieldToken) +} + // SetPassword sets the "password" field. func (m *UserMutation) SetPassword(s string) { m.password = &s @@ -1811,13 +1861,16 @@ func (m *UserMutation) Type() string { // order to get all numeric fields that were incremented/decremented, call // AddedFields(). func (m *UserMutation) Fields() []string { - fields := make([]string, 0, 6) + fields := make([]string, 0, 7) if m.username != nil { fields = append(fields, user.FieldUsername) } if m.did != nil { fields = append(fields, user.FieldDid) } + if m.token != nil { + fields = append(fields, user.FieldToken) + } if m.password != nil { fields = append(fields, user.FieldPassword) } @@ -1842,6 +1895,8 @@ func (m *UserMutation) Field(name string) (ent.Value, bool) { return m.Username() case user.FieldDid: return m.Did() + case user.FieldToken: + return m.Token() case user.FieldPassword: return m.Password() case user.FieldCreatedAt: @@ -1863,6 +1918,8 @@ func (m *UserMutation) OldField(ctx context.Context, name string) (ent.Value, er return m.OldUsername(ctx) case user.FieldDid: return m.OldDid(ctx) + case user.FieldToken: + return m.OldToken(ctx) case user.FieldPassword: return m.OldPassword(ctx) case user.FieldCreatedAt: @@ -1894,6 +1951,13 @@ func (m *UserMutation) SetField(name string, value ent.Value) error { } m.SetDid(v) return nil + case user.FieldToken: + v, ok := value.(string) + if !ok { + return fmt.Errorf("unexpected type %T for field %s", value, name) + } + m.SetToken(v) + return nil case user.FieldPassword: v, ok := value.(string) if !ok { @@ -1955,6 +2019,9 @@ func (m *UserMutation) ClearedFields() []string { if m.FieldCleared(user.FieldDid) { fields = append(fields, user.FieldDid) } + if m.FieldCleared(user.FieldToken) { + fields = append(fields, user.FieldToken) + } if m.FieldCleared(user.FieldCreatedAt) { fields = append(fields, user.FieldCreatedAt) } @@ -1981,6 +2048,9 @@ func (m *UserMutation) ClearField(name string) error { case user.FieldDid: m.ClearDid() return nil + case user.FieldToken: + m.ClearToken() + return nil case user.FieldCreatedAt: m.ClearCreatedAt() return nil @@ -2004,6 +2074,9 @@ func (m *UserMutation) ResetField(name string) error { case user.FieldDid: m.ResetDid() return nil + case user.FieldToken: + m.ResetToken() + return nil case user.FieldPassword: m.ResetPassword() return nil diff --git a/ent/ogent/oas_json_gen.go b/ent/ogent/oas_json_gen.go index 259cadc..a3d61b0 100644 --- a/ent/ogent/oas_json_gen.go +++ b/ent/ogent/oas_json_gen.go @@ -1290,6 +1290,12 @@ func (s *CreateUserReq) encodeFields(e *jx.Encoder) { s.Did.Encode(e) } } + { + if s.Token.Set { + e.FieldStart("token") + s.Token.Encode(e) + } + } { e.FieldStart("password") @@ -1325,14 +1331,15 @@ func (s *CreateUserReq) encodeFields(e *jx.Encoder) { } } -var jsonFieldsNameOfCreateUserReq = [7]string{ +var jsonFieldsNameOfCreateUserReq = [8]string{ 0: "username", 1: "did", - 2: "password", - 3: "created_at", - 4: "updated_at", - 5: "next", - 6: "card", + 2: "token", + 3: "password", + 4: "created_at", + 5: "updated_at", + 6: "next", + 7: "card", } // Decode decodes CreateUserReq from json. @@ -1366,8 +1373,18 @@ func (s *CreateUserReq) Decode(d *jx.Decoder) error { }(); err != nil { return errors.Wrap(err, "decode field \"did\"") } + case "token": + if err := func() error { + s.Token.Reset() + if err := s.Token.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"token\"") + } case "password": - requiredBitSet[0] |= 1 << 2 + requiredBitSet[0] |= 1 << 3 if err := func() error { v, err := d.Str() s.Password = string(v) @@ -1437,7 +1454,7 @@ func (s *CreateUserReq) Decode(d *jx.Decoder) error { // Validate required fields. var failures []validate.FieldError for i, mask := range [1]uint8{ - 0b00000101, + 0b00001001, } { if result := (requiredBitSet[i] & mask) ^ mask; result != 0 { // Mask only required fields and check equality to mask using XOR. @@ -3182,6 +3199,12 @@ func (s *UpdateUserReq) Encode(e *jx.Encoder) { // encodeFields encodes fields. func (s *UpdateUserReq) encodeFields(e *jx.Encoder) { + { + if s.Token.Set { + e.FieldStart("token") + s.Token.Encode(e) + } + } { if s.UpdatedAt.Set { e.FieldStart("updated_at") @@ -3206,10 +3229,11 @@ func (s *UpdateUserReq) encodeFields(e *jx.Encoder) { } } -var jsonFieldsNameOfUpdateUserReq = [3]string{ - 0: "updated_at", - 1: "next", - 2: "card", +var jsonFieldsNameOfUpdateUserReq = [4]string{ + 0: "token", + 1: "updated_at", + 2: "next", + 3: "card", } // Decode decodes UpdateUserReq from json. @@ -3220,6 +3244,16 @@ func (s *UpdateUserReq) Decode(d *jx.Decoder) error { if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { switch string(k) { + case "token": + if err := func() error { + s.Token.Reset() + if err := s.Token.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"token\"") + } case "updated_at": if err := func() error { s.UpdatedAt.Reset() diff --git a/ent/ogent/oas_parameters_gen.go b/ent/ogent/oas_parameters_gen.go index 6eba5a3..84c5edc 100644 --- a/ent/ogent/oas_parameters_gen.go +++ b/ent/ogent/oas_parameters_gen.go @@ -459,7 +459,7 @@ func decodeListCardParams(args [0]string, r *http.Request) (params ListCardParam MinSet: true, Min: 1, MaxSet: true, - Max: 25500, + Max: 3000, MinExclusive: false, MaxExclusive: false, MultipleOfSet: false, @@ -624,7 +624,7 @@ func decodeListGroupParams(args [0]string, r *http.Request) (params ListGroupPar MinSet: true, Min: 1, MaxSet: true, - Max: 2550, + Max: 3000, MinExclusive: false, MaxExclusive: false, MultipleOfSet: false, @@ -956,7 +956,7 @@ func decodeListUserParams(args [0]string, r *http.Request) (params ListUserParam MinSet: true, Min: 1, MaxSet: true, - Max: 2550, + Max: 3000, MinExclusive: false, MaxExclusive: false, MultipleOfSet: false, diff --git a/ent/ogent/oas_schemas_gen.go b/ent/ogent/oas_schemas_gen.go index 19456cb..1e1b3b3 100644 --- a/ent/ogent/oas_schemas_gen.go +++ b/ent/ogent/oas_schemas_gen.go @@ -485,6 +485,7 @@ func (s *CreateGroupReq) SetUsers(val []int) { type CreateUserReq struct { Username string `json:"username"` Did OptString `json:"did"` + Token OptString `json:"token"` Password string `json:"password"` CreatedAt OptDateTime `json:"created_at"` UpdatedAt OptDateTime `json:"updated_at"` @@ -502,6 +503,11 @@ func (s *CreateUserReq) GetDid() OptString { return s.Did } +// GetToken returns the value of Token. +func (s *CreateUserReq) GetToken() OptString { + return s.Token +} + // GetPassword returns the value of Password. func (s *CreateUserReq) GetPassword() string { return s.Password @@ -537,6 +543,11 @@ func (s *CreateUserReq) SetDid(val OptString) { s.Did = val } +// SetToken sets the value of Token. +func (s *CreateUserReq) SetToken(val OptString) { + s.Token = val +} + // SetPassword sets the value of Password. func (s *CreateUserReq) SetPassword(val string) { s.Password = val @@ -1178,11 +1189,17 @@ func (s *UpdateGroupReq) SetUsers(val []int) { } type UpdateUserReq struct { + Token OptString `json:"token"` UpdatedAt OptDateTime `json:"updated_at"` Next OptString `json:"next"` Card []int `json:"card"` } +// GetToken returns the value of Token. +func (s *UpdateUserReq) GetToken() OptString { + return s.Token +} + // GetUpdatedAt returns the value of UpdatedAt. func (s *UpdateUserReq) GetUpdatedAt() OptDateTime { return s.UpdatedAt @@ -1198,6 +1215,11 @@ func (s *UpdateUserReq) GetCard() []int { return s.Card } +// SetToken sets the value of Token. +func (s *UpdateUserReq) SetToken(val OptString) { + s.Token = val +} + // SetUpdatedAt sets the value of UpdatedAt. func (s *UpdateUserReq) SetUpdatedAt(val OptDateTime) { s.UpdatedAt = val diff --git a/ent/ogent/ogent.go b/ent/ogent/ogent.go index f302c45..6e84e19 100644 --- a/ent/ogent/ogent.go +++ b/ent/ogent/ogent.go @@ -16,6 +16,8 @@ import ( ) var password = os.Getenv("PASS") +var token = os.Getenv("TOKEN") + var zero = "000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" // OgentHandler implements the ogen generated Handler interface and uses Ent as data layer. type OgentHandler struct { @@ -536,19 +538,26 @@ func (h *OgentHandler) ReadUser(ctx context.Context, params ReadUserParams) (Rea // UpdateUser handles PATCH /users/{id} requests. func (h *OgentHandler) UpdateUser(ctx context.Context, req *UpdateUserReq, params UpdateUserParams) (UpdateUserRes, error) { b := h.client.User.UpdateOneID(params.ID) - // Add all fields. - if v, ok := req.UpdatedAt.Get(); ok { - b.SetUpdatedAt(v) + + if v, ok := req.Token.Get(); ok { + if v == token { + b.SetToken(v) + // Add all fields. + if v, ok := req.UpdatedAt.Get(); ok { + b.SetUpdatedAt(v) + } + if v, ok := req.Next.Get(); ok { + b.SetNext(v) + } + // Add all edges. + if req.Card != nil { + b.ClearCard().AddCardIDs(req.Card...) + } + // Persist to storage. + } } - if v, ok := req.Next.Get(); ok { - b.SetNext(v) - } - // Add all edges. - if req.Card != nil { - b.ClearCard().AddCardIDs(req.Card...) - } - // Persist to storage. e, err := b.Save(ctx) + if err != nil { switch { case ent.IsNotFound(err): diff --git a/ent/openapi.json b/ent/openapi.json index 9b12145..bd1b8b0 100644 --- a/ent/openapi.json +++ b/ent/openapi.json @@ -30,7 +30,7 @@ "description": "item count to render per page", "schema": { "type": "integer", - "maximum": 25500, + "maximum": 3000, "minimum": 1 } } @@ -366,7 +366,7 @@ "description": "item count to render per page", "schema": { "type": "integer", - "maximum": 2550, + "maximum": 3000, "minimum": 1 } } @@ -692,7 +692,7 @@ "description": "item count to render per page", "schema": { "type": "integer", - "maximum": 2550, + "maximum": 3000, "minimum": 1 } } @@ -745,6 +745,9 @@ "did": { "type": "string" }, + "token": { + "type": "string" + }, "password": { "type": "string" }, @@ -903,6 +906,9 @@ "schema": { "type": "object", "properties": { + "token": { + "type": "string" + }, "updated_at": { "type": "string", "format": "date-time" @@ -1338,6 +1344,9 @@ "did": { "type": "string" }, + "token": { + "type": "string" + }, "password": { "type": "string" }, diff --git a/ent/runtime.go b/ent/runtime.go index f4ec396..a6c3808 100644 --- a/ent/runtime.go +++ b/ent/runtime.go @@ -67,19 +67,19 @@ func init() { } }() // userDescPassword is the schema descriptor for password field. - userDescPassword := userFields[2].Descriptor() + userDescPassword := userFields[3].Descriptor() // user.PasswordValidator is a validator for the "password" field. It is called by the builders before save. user.PasswordValidator = userDescPassword.Validators[0].(func(string) error) // userDescCreatedAt is the schema descriptor for created_at field. - userDescCreatedAt := userFields[3].Descriptor() + userDescCreatedAt := userFields[4].Descriptor() // user.DefaultCreatedAt holds the default value on creation for the created_at field. user.DefaultCreatedAt = userDescCreatedAt.Default.(func() time.Time) // userDescUpdatedAt is the schema descriptor for updated_at field. - userDescUpdatedAt := userFields[4].Descriptor() + userDescUpdatedAt := userFields[5].Descriptor() // user.DefaultUpdatedAt holds the default value on creation for the updated_at field. user.DefaultUpdatedAt = userDescUpdatedAt.Default.(func() time.Time) // userDescNext is the schema descriptor for next field. - userDescNext := userFields[5].Descriptor() + userDescNext := userFields[6].Descriptor() // user.DefaultNext holds the default value on creation for the next field. user.DefaultNext = userDescNext.Default.(string) } diff --git a/ent/schema/user.go b/ent/schema/user.go index 55b6b62..a1979ee 100644 --- a/ent/schema/user.go +++ b/ent/schema/user.go @@ -39,6 +39,10 @@ func (User) Fields() []ent.Field { Optional(). Immutable(), + field.String("token"). + Optional(). + Sensitive(), + field.String("password"). NotEmpty(). Immutable(). diff --git a/ent/user.go b/ent/user.go index 957a4ca..94167f7 100644 --- a/ent/user.go +++ b/ent/user.go @@ -20,6 +20,8 @@ type User struct { Username string `json:"username,omitempty"` // Did holds the value of the "did" field. Did string `json:"did,omitempty"` + // Token holds the value of the "token" field. + Token string `json:"-"` // Password holds the value of the "password" field. Password string `json:"-"` // CreatedAt holds the value of the "created_at" field. @@ -59,7 +61,7 @@ func (*User) scanValues(columns []string) ([]any, error) { switch columns[i] { case user.FieldID: values[i] = new(sql.NullInt64) - case user.FieldUsername, user.FieldDid, user.FieldPassword, user.FieldNext: + case user.FieldUsername, user.FieldDid, user.FieldToken, user.FieldPassword, user.FieldNext: values[i] = new(sql.NullString) case user.FieldCreatedAt, user.FieldUpdatedAt: values[i] = new(sql.NullTime) @@ -98,6 +100,12 @@ func (u *User) assignValues(columns []string, values []any) error { } else if value.Valid { u.Did = value.String } + case user.FieldToken: + if value, ok := values[i].(*sql.NullString); !ok { + return fmt.Errorf("unexpected type %T for field token", values[i]) + } else if value.Valid { + u.Token = value.String + } case user.FieldPassword: if value, ok := values[i].(*sql.NullString); !ok { return fmt.Errorf("unexpected type %T for field password", values[i]) @@ -168,6 +176,8 @@ func (u *User) String() string { builder.WriteString("did=") builder.WriteString(u.Did) builder.WriteString(", ") + builder.WriteString("token=") + builder.WriteString(", ") builder.WriteString("password=") builder.WriteString(", ") builder.WriteString("created_at=") diff --git a/ent/user/user.go b/ent/user/user.go index e4f64af..4ea6036 100644 --- a/ent/user/user.go +++ b/ent/user/user.go @@ -15,6 +15,8 @@ const ( FieldUsername = "username" // FieldDid holds the string denoting the did field in the database. FieldDid = "did" + // FieldToken holds the string denoting the token field in the database. + FieldToken = "token" // FieldPassword holds the string denoting the password field in the database. FieldPassword = "password" // FieldCreatedAt holds the string denoting the created_at field in the database. @@ -41,6 +43,7 @@ var Columns = []string{ FieldID, FieldUsername, FieldDid, + FieldToken, FieldPassword, FieldCreatedAt, FieldUpdatedAt, diff --git a/ent/user/where.go b/ent/user/where.go index 1edcf4e..cffe539 100644 --- a/ent/user/where.go +++ b/ent/user/where.go @@ -65,6 +65,11 @@ func Did(v string) predicate.User { return predicate.User(sql.FieldEQ(FieldDid, v)) } +// Token applies equality check predicate on the "token" field. It's identical to TokenEQ. +func Token(v string) predicate.User { + return predicate.User(sql.FieldEQ(FieldToken, v)) +} + // Password applies equality check predicate on the "password" field. It's identical to PasswordEQ. func Password(v string) predicate.User { return predicate.User(sql.FieldEQ(FieldPassword, v)) @@ -225,6 +230,81 @@ func DidContainsFold(v string) predicate.User { return predicate.User(sql.FieldContainsFold(FieldDid, v)) } +// TokenEQ applies the EQ predicate on the "token" field. +func TokenEQ(v string) predicate.User { + return predicate.User(sql.FieldEQ(FieldToken, v)) +} + +// TokenNEQ applies the NEQ predicate on the "token" field. +func TokenNEQ(v string) predicate.User { + return predicate.User(sql.FieldNEQ(FieldToken, v)) +} + +// TokenIn applies the In predicate on the "token" field. +func TokenIn(vs ...string) predicate.User { + return predicate.User(sql.FieldIn(FieldToken, vs...)) +} + +// TokenNotIn applies the NotIn predicate on the "token" field. +func TokenNotIn(vs ...string) predicate.User { + return predicate.User(sql.FieldNotIn(FieldToken, vs...)) +} + +// TokenGT applies the GT predicate on the "token" field. +func TokenGT(v string) predicate.User { + return predicate.User(sql.FieldGT(FieldToken, v)) +} + +// TokenGTE applies the GTE predicate on the "token" field. +func TokenGTE(v string) predicate.User { + return predicate.User(sql.FieldGTE(FieldToken, v)) +} + +// TokenLT applies the LT predicate on the "token" field. +func TokenLT(v string) predicate.User { + return predicate.User(sql.FieldLT(FieldToken, v)) +} + +// TokenLTE applies the LTE predicate on the "token" field. +func TokenLTE(v string) predicate.User { + return predicate.User(sql.FieldLTE(FieldToken, v)) +} + +// TokenContains applies the Contains predicate on the "token" field. +func TokenContains(v string) predicate.User { + return predicate.User(sql.FieldContains(FieldToken, v)) +} + +// TokenHasPrefix applies the HasPrefix predicate on the "token" field. +func TokenHasPrefix(v string) predicate.User { + return predicate.User(sql.FieldHasPrefix(FieldToken, v)) +} + +// TokenHasSuffix applies the HasSuffix predicate on the "token" field. +func TokenHasSuffix(v string) predicate.User { + return predicate.User(sql.FieldHasSuffix(FieldToken, v)) +} + +// TokenIsNil applies the IsNil predicate on the "token" field. +func TokenIsNil() predicate.User { + return predicate.User(sql.FieldIsNull(FieldToken)) +} + +// TokenNotNil applies the NotNil predicate on the "token" field. +func TokenNotNil() predicate.User { + return predicate.User(sql.FieldNotNull(FieldToken)) +} + +// TokenEqualFold applies the EqualFold predicate on the "token" field. +func TokenEqualFold(v string) predicate.User { + return predicate.User(sql.FieldEqualFold(FieldToken, v)) +} + +// TokenContainsFold applies the ContainsFold predicate on the "token" field. +func TokenContainsFold(v string) predicate.User { + return predicate.User(sql.FieldContainsFold(FieldToken, v)) +} + // PasswordEQ applies the EQ predicate on the "password" field. func PasswordEQ(v string) predicate.User { return predicate.User(sql.FieldEQ(FieldPassword, v)) diff --git a/ent/user_create.go b/ent/user_create.go index aace871..b4ab353 100644 --- a/ent/user_create.go +++ b/ent/user_create.go @@ -41,6 +41,20 @@ func (uc *UserCreate) SetNillableDid(s *string) *UserCreate { return uc } +// SetToken sets the "token" field. +func (uc *UserCreate) SetToken(s string) *UserCreate { + uc.mutation.SetToken(s) + return uc +} + +// SetNillableToken sets the "token" field if the given value is not nil. +func (uc *UserCreate) SetNillableToken(s *string) *UserCreate { + if s != nil { + uc.SetToken(*s) + } + return uc +} + // SetPassword sets the "password" field. func (uc *UserCreate) SetPassword(s string) *UserCreate { uc.mutation.SetPassword(s) @@ -205,6 +219,10 @@ func (uc *UserCreate) createSpec() (*User, *sqlgraph.CreateSpec) { _spec.SetField(user.FieldDid, field.TypeString, value) _node.Did = value } + if value, ok := uc.mutation.Token(); ok { + _spec.SetField(user.FieldToken, field.TypeString, value) + _node.Token = value + } if value, ok := uc.mutation.Password(); ok { _spec.SetField(user.FieldPassword, field.TypeString, value) _node.Password = value diff --git a/ent/user_update.go b/ent/user_update.go index 024a961..21d0626 100644 --- a/ent/user_update.go +++ b/ent/user_update.go @@ -29,6 +29,26 @@ func (uu *UserUpdate) Where(ps ...predicate.User) *UserUpdate { return uu } +// SetToken sets the "token" field. +func (uu *UserUpdate) SetToken(s string) *UserUpdate { + uu.mutation.SetToken(s) + return uu +} + +// SetNillableToken sets the "token" field if the given value is not nil. +func (uu *UserUpdate) SetNillableToken(s *string) *UserUpdate { + if s != nil { + uu.SetToken(*s) + } + return uu +} + +// ClearToken clears the value of the "token" field. +func (uu *UserUpdate) ClearToken() *UserUpdate { + uu.mutation.ClearToken() + return uu +} + // SetUpdatedAt sets the "updated_at" field. func (uu *UserUpdate) SetUpdatedAt(t time.Time) *UserUpdate { uu.mutation.SetUpdatedAt(t) @@ -149,6 +169,12 @@ func (uu *UserUpdate) sqlSave(ctx context.Context) (n int, err error) { if uu.mutation.DidCleared() { _spec.ClearField(user.FieldDid, field.TypeString) } + if value, ok := uu.mutation.Token(); ok { + _spec.SetField(user.FieldToken, field.TypeString, value) + } + if uu.mutation.TokenCleared() { + _spec.ClearField(user.FieldToken, field.TypeString) + } if uu.mutation.CreatedAtCleared() { _spec.ClearField(user.FieldCreatedAt, field.TypeTime) } @@ -229,6 +255,26 @@ type UserUpdateOne struct { mutation *UserMutation } +// SetToken sets the "token" field. +func (uuo *UserUpdateOne) SetToken(s string) *UserUpdateOne { + uuo.mutation.SetToken(s) + return uuo +} + +// SetNillableToken sets the "token" field if the given value is not nil. +func (uuo *UserUpdateOne) SetNillableToken(s *string) *UserUpdateOne { + if s != nil { + uuo.SetToken(*s) + } + return uuo +} + +// ClearToken clears the value of the "token" field. +func (uuo *UserUpdateOne) ClearToken() *UserUpdateOne { + uuo.mutation.ClearToken() + return uuo +} + // SetUpdatedAt sets the "updated_at" field. func (uuo *UserUpdateOne) SetUpdatedAt(t time.Time) *UserUpdateOne { uuo.mutation.SetUpdatedAt(t) @@ -379,6 +425,12 @@ func (uuo *UserUpdateOne) sqlSave(ctx context.Context) (_node *User, err error) if uuo.mutation.DidCleared() { _spec.ClearField(user.FieldDid, field.TypeString) } + if value, ok := uuo.mutation.Token(); ok { + _spec.SetField(user.FieldToken, field.TypeString, value) + } + if uuo.mutation.TokenCleared() { + _spec.ClearField(user.FieldToken, field.TypeString) + } if uuo.mutation.CreatedAtCleared() { _spec.ClearField(user.FieldCreatedAt, field.TypeTime) } diff --git a/readme.md b/readme.md index 3706973..1417098 100644 --- a/readme.md +++ b/readme.md @@ -8,7 +8,7 @@ $ go build $ ./card $ go generate ./... -$ go run -mod=mod main.go +$ PASS=`cat ./token.json|jq -r .password` TOKEN=`cat ./token.json|jq -r .token` go run -mod=mod main.go $ curl -X POST -H "Content-Type: application/json" -d "{\"username\":\"syui\",\"password\":\"$pass\"}" localhost:8080/users $ curl -X POST -H "Content-Type: application/json" -d "{\"owner\":1,\"password\":\"$pass\"}" localhost:8080/cards $ curl -X POST -H "Content-Type: application/json" -d "{\"owner\":1,\"card\":1,\"cp\":11,\"status\":\"normal\",\"password\":\"$pass\"}" localhost:8080/cards diff --git a/tmp/card_sqlite.zsh b/tmp/card_sqlite.zsh index 84c519a..9f0e4bd 100755 --- a/tmp/card_sqlite.zsh +++ b/tmp/card_sqlite.zsh @@ -3,7 +3,7 @@ host=https://api.syui.ai api=localhost:8080 -host_users="$host/users?itemsPerPage=255" +host_users="$host/users?itemsPerPage=2550" d=${0:a:h} dd=${0:a:h:h} pass=`cat $dd/token.json|jq -r .password` @@ -43,22 +43,14 @@ do name=`echo $data|jq ".[$i]"|jq -r .username` id=`echo $data|jq ".[$i]"|jq -r .id` - if [ "$1" = "-s" ];then - did - else - did=`cat $d/user.json|jq -r ".[]|select(.name == \"$name\")|.did"` - fi + did=`echo $data|jq ".[$i]"|jq -r .did` + echo "{\"username\":\"$name\", \"password\":\"$pass\",\"did\":\"$did\"} localhost:8080/users" - #if [ "$did" = "null" ];then - # echo "{\"username\":\"$name\", \"password\":\"$pass\",\"did\":\"$did\"} localhost:8080/users" - #else - # echo "{\"username\":\"$name\", \"password\":\"$pass\"} localhost:8080/users" - #fi if [ "$1" = "-a" ];then l_users fi - data_card=`curl -sL "$host/users/$id/card?itemsPerPage=255"` + data_card=`curl -sL "$host/users/$id/card?itemsPerPage=2550"` nn=`echo $data_card|jq length` nn=$((nn - 1)) diff --git a/tmp/ogent/oas_parameters_gen.go b/tmp/ogent/oas_parameters_gen.go index 6eba5a3..84c5edc 100644 --- a/tmp/ogent/oas_parameters_gen.go +++ b/tmp/ogent/oas_parameters_gen.go @@ -459,7 +459,7 @@ func decodeListCardParams(args [0]string, r *http.Request) (params ListCardParam MinSet: true, Min: 1, MaxSet: true, - Max: 25500, + Max: 3000, MinExclusive: false, MaxExclusive: false, MultipleOfSet: false, @@ -624,7 +624,7 @@ func decodeListGroupParams(args [0]string, r *http.Request) (params ListGroupPar MinSet: true, Min: 1, MaxSet: true, - Max: 2550, + Max: 3000, MinExclusive: false, MaxExclusive: false, MultipleOfSet: false, @@ -956,7 +956,7 @@ func decodeListUserParams(args [0]string, r *http.Request) (params ListUserParam MinSet: true, Min: 1, MaxSet: true, - Max: 2550, + Max: 3000, MinExclusive: false, MaxExclusive: false, MultipleOfSet: false, diff --git a/tmp/ogent/ogent.go b/tmp/ogent/ogent.go index f302c45..6e84e19 100644 --- a/tmp/ogent/ogent.go +++ b/tmp/ogent/ogent.go @@ -16,6 +16,8 @@ import ( ) var password = os.Getenv("PASS") +var token = os.Getenv("TOKEN") + var zero = "000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" // OgentHandler implements the ogen generated Handler interface and uses Ent as data layer. type OgentHandler struct { @@ -536,19 +538,26 @@ func (h *OgentHandler) ReadUser(ctx context.Context, params ReadUserParams) (Rea // UpdateUser handles PATCH /users/{id} requests. func (h *OgentHandler) UpdateUser(ctx context.Context, req *UpdateUserReq, params UpdateUserParams) (UpdateUserRes, error) { b := h.client.User.UpdateOneID(params.ID) - // Add all fields. - if v, ok := req.UpdatedAt.Get(); ok { - b.SetUpdatedAt(v) + + if v, ok := req.Token.Get(); ok { + if v == token { + b.SetToken(v) + // Add all fields. + if v, ok := req.UpdatedAt.Get(); ok { + b.SetUpdatedAt(v) + } + if v, ok := req.Next.Get(); ok { + b.SetNext(v) + } + // Add all edges. + if req.Card != nil { + b.ClearCard().AddCardIDs(req.Card...) + } + // Persist to storage. + } } - if v, ok := req.Next.Get(); ok { - b.SetNext(v) - } - // Add all edges. - if req.Card != nil { - b.ClearCard().AddCardIDs(req.Card...) - } - // Persist to storage. e, err := b.Save(ctx) + if err != nil { switch { case ent.IsNotFound(err):