syntax = "proto3";

package slash.store;

option go_package = "gen/store";

message UserSetting {
  int32 user_id = 1;

  UserSettingKey key = 2;

  oneof value {
    AccessTokensUserSetting access_tokens = 3;

    LocaleUserSetting locale = 4;

    ColorThemeUserSetting color_theme = 5;
  }
}

enum UserSettingKey {
  USER_SETTING_KEY_UNSPECIFIED = 0;
  // Access tokens for the user.
  USER_SETTING_ACCESS_TOKENS = 1;
  // Locale for the user.
  USER_SETTING_LOCALE = 2;
  // Color theme for the user.
  USER_SETTING_COLOR_THEME = 3;
}

message AccessTokensUserSetting {
  message AccessToken {
    // The access token is a JWT token.
    // Including expiration time, issuer, etc.
    string access_token = 1;
    // A description for the access token.
    string description = 2;
  }
  repeated AccessToken access_tokens = 1;
}

enum LocaleUserSetting {
  LOCALE_USER_SETTING_UNSPECIFIED = 0;
  LOCALE_USER_SETTING_EN = 1;
  LOCALE_USER_SETTING_ZH = 2;
}

enum ColorThemeUserSetting {
  COLOR_THEME_USER_SETTING_UNSPECIFIED = 0;
  COLOR_THEME_USER_SETTING_LIGHT = 1;
  COLOR_THEME_USER_SETTING_DARK = 2;
}
