syntax = "proto3";

package slash.store;

option go_package = "gen/store";

message WorkspaceSetting {
  WorkspaceSettingKey key = 1;

  oneof value {
    string secret_session = 2;
    bool enable_signup = 3;
    string resource_relative_path = 4;
    string custom_style = 5;
    string custom_script = 6;
    AutoBackupWorkspaceSetting auto_backup = 7;
  }
}

enum WorkspaceSettingKey {
  WORKSPACE_SETTING_KEY_UNSPECIFIED = 0;
  // The secret session key used to encrypt session data.
  WORKSPACE_SETTING_SECRET_SESSION = 1;
  // Whether to enable other users to sign up.
  WORKSAPCE_SETTING_ENABLE_SIGNUP = 2;
  // The relative path of the resource directory.
  WORKSPACE_SETTING_RESOURCE_RELATIVE_PATH = 3;
  // The custom style.
  WORKSPACE_SETTING_CUSTOM_STYLE = 4;
  // The custom script.
  WORKSPACE_SETTING_CUSTOM_SCRIPT = 5;
  // The auto backup setting.
  WORKSPACE_SETTING_AUTO_BACKUP = 6;
}

message AutoBackupWorkspaceSetting {
  // Whether auto backup is enabled.
  bool enabled = 1;
  // The cron expression for auto backup.
  // For example, "0 0 0 * * *" means backup at 00:00:00 every day.
  // See https://en.wikipedia.org/wiki/Cron for more details.
  string cron_expression = 2;
  // The maximum number of backups to keep.
  int32 max_keep = 3;
}
