package command

type BrCmd struct{ ExecCmd }

type BrBackupCmd struct{ ExecCmd }

type BrBackupDbCmd struct{ ExecCmd }

type BrBackupFullCmd struct{ ExecCmd }

type BrBackupTableCmd struct{ ExecCmd }

type BrValidateCmd struct{ ExecCmd }

type BrValidateDecodeCmd struct{ ExecCmd }

type BrLogCmd struct{ ExecCmd }

func (b *BrCmd) Backup(args ...string) *BrBackupCmd {
	return &BrBackupCmd{ExecCmd{Command: "backup", Options: args, ParentCmd: b}}
}

func (b *BrBackupCmd) Db(args ...string) *BrBackupDbCmd {
	return &BrBackupDbCmd{ExecCmd{Command: "db", Options: args, ParentCmd: b}}
}

func (b *BrBackupCmd) Full(args ...string) *BrBackupFullCmd {
	return &BrBackupFullCmd{ExecCmd{Command: "full", Options: args, ParentCmd: b}}
}

func (b *BrBackupCmd) Table(args ...string) *BrBackupTableCmd {
	return &BrBackupTableCmd{ExecCmd{Command: "table", Options: args, ParentCmd: b}}
}

func (b *BrCmd) Validate(args ...string) *BrValidateCmd {
	return &BrValidateCmd{ExecCmd{Command: "validate", Options: args, ParentCmd: b}}
}

func (b *BrValidateCmd) Decode(args ...string) *BrValidateDecodeCmd {
	return &BrValidateDecodeCmd{ExecCmd{Command: "decode", Options: args, ParentCmd: b}}
}

func (b *BrCmd) Log(args ...string) *BrLogCmd {
	return &BrLogCmd{ExecCmd{Command: "log", Options: args, ParentCmd: b}}
}

type BrRestoreCmd struct{ ExecCmd }

type BrRestoreDbCmd struct{ ExecCmd }

type BrRestoreFullCmd struct{ ExecCmd }

type BrRestoreTableCmd struct{ ExecCmd }

type BrRestorePointCmd struct{ ExecCmd }

func (b *BrCmd) Restore(args ...string) *BrRestoreCmd {
	return &BrRestoreCmd{ExecCmd{Command: "restore", Options: args, ParentCmd: b}}
}

func (b *BrRestoreCmd) Db(args ...string) *BrRestoreDbCmd {
	return &BrRestoreDbCmd{ExecCmd{Command: "db", Options: args, ParentCmd: b}}
}

func (b *BrRestoreCmd) Full(args ...string) *BrRestoreFullCmd {
	return &BrRestoreFullCmd{ExecCmd{Command: "full", Options: args, ParentCmd: b}}
}

func (b *BrRestoreCmd) Table(args ...string) *BrRestoreTableCmd {
	return &BrRestoreTableCmd{ExecCmd{Command: "table", Options: args, ParentCmd: b}}
}

func (b *BrRestoreCmd) Point(args ...string) *BrRestorePointCmd {
	return &BrRestorePointCmd{ExecCmd{Command: "point", Options: args, ParentCmd: b}}
}
