Module: BetterAuth::APIKey::SchemaDefinition

Defined in:
lib/better_auth/api_key/schema.rb

Class Method Summary collapse

Class Method Details

.schema(config, custom_schema = nil) ⇒ Object



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
# File 'lib/better_auth/api_key/schema.rb', line 8

def schema(config, custom_schema = nil)
  base = {
    apikey: {
      fields: {
        configId: {type: "string", required: true, default_value: "default", index: true},
        name: {type: "string", required: false},
        start: {type: "string", required: false},
        prefix: {type: "string", required: false},
        key: {type: "string", required: true, index: true},
        referenceId: {type: "string", required: true, index: true},
        refillInterval: {type: "number", required: false},
        refillAmount: {type: "number", required: false},
        lastRefillAt: {type: "date", required: false},
        enabled: {type: "boolean", required: false, default_value: true},
        rateLimitEnabled: {type: "boolean", required: false, default_value: true},
        rateLimitTimeWindow: {type: "number", required: false, default_value: config[:rate_limit][:time_window]},
        rateLimitMax: {type: "number", required: false, default_value: config[:rate_limit][:max_requests]},
        requestCount: {type: "number", required: false, default_value: 0},
        remaining: {type: "number", required: false},
        lastRequest: {type: "date", required: false},
        expiresAt: {type: "date", required: false},
        createdAt: {type: "date", required: true},
        updatedAt: {type: "date", required: true},
        permissions: {type: "string", required: false},
        metadata: {type: "string", required: false}
      }
    }
  }
  BetterAuth::Plugins.deep_merge_hashes(base, BetterAuth::Plugins.normalize_hash(custom_schema || {}))
end