first pass on classes model, move database.sql to first migration file to implement migrations
This commit is contained in:
parent
49bf5f28cf
commit
02158041e8
69
internal/models/classes/classes.go
Normal file
69
internal/models/classes/classes.go
Normal file
@ -0,0 +1,69 @@
|
|||||||
|
package classes
|
||||||
|
|
||||||
|
import (
|
||||||
|
"dk/internal/database"
|
||||||
|
"fmt"
|
||||||
|
"strings"
|
||||||
|
)
|
||||||
|
|
||||||
|
type Classes struct {
|
||||||
|
ID int
|
||||||
|
Name string
|
||||||
|
Lore string
|
||||||
|
BaseHP int
|
||||||
|
BaseMP int
|
||||||
|
BaseSTR int
|
||||||
|
BaseDEX int
|
||||||
|
RateHP int
|
||||||
|
RateMP int
|
||||||
|
RateSTR int
|
||||||
|
RateDEX int
|
||||||
|
}
|
||||||
|
|
||||||
|
func New() *Classes {
|
||||||
|
return &Classes{
|
||||||
|
BaseHP: 15,
|
||||||
|
BaseMP: 10,
|
||||||
|
BaseSTR: 1,
|
||||||
|
BaseDEX: 1,
|
||||||
|
RateHP: 2,
|
||||||
|
RateMP: 2,
|
||||||
|
RateSTR: 2,
|
||||||
|
RateDEX: 2,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *Classes) Validate() error {
|
||||||
|
if strings.TrimSpace(c.Name) == "" {
|
||||||
|
return fmt.Errorf("class name cannot be empty")
|
||||||
|
}
|
||||||
|
if c.BaseHP < 1 {
|
||||||
|
return fmt.Errorf("class base HP must be at least 1")
|
||||||
|
}
|
||||||
|
if c.BaseMP < 0 {
|
||||||
|
return fmt.Errorf("class base MP must be at least 0")
|
||||||
|
}
|
||||||
|
if c.BaseSTR < 0 {
|
||||||
|
return fmt.Errorf("class base strength must be at least 0")
|
||||||
|
}
|
||||||
|
if c.BaseDEX < 0 {
|
||||||
|
return fmt.Errorf("class base dexterity must be at least 0")
|
||||||
|
}
|
||||||
|
if c.RateHP < 0 {
|
||||||
|
return fmt.Errorf("class HP rate must be at least 0")
|
||||||
|
}
|
||||||
|
if c.RateMP < 0 {
|
||||||
|
return fmt.Errorf("class MP rate must be at least 0")
|
||||||
|
}
|
||||||
|
if c.RateSTR < 0 {
|
||||||
|
return fmt.Errorf("class strength rate must be at least 0")
|
||||||
|
}
|
||||||
|
if c.RateDEX < 0 {
|
||||||
|
return fmt.Errorf("class dexterity rate must be at least 0")
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *Classes) Delete() error {
|
||||||
|
return database.Exec("DELETE FROM classes WHERE id = %d", c.ID)
|
||||||
|
}
|
@ -109,21 +109,20 @@ CREATE TABLE classes (
|
|||||||
'id' INTEGER PRIMARY KEY AUTOINCREMENT,
|
'id' INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||||
'name' TEXT NOT NULL,
|
'name' TEXT NOT NULL,
|
||||||
'lore' TEXT NOT NULL,
|
'lore' TEXT NOT NULL,
|
||||||
'exp_rate' INTEGER NOT NULL DEFAULT 3,
|
|
||||||
'base_hp' INTEGER NOT NULL DEFAULT 15,
|
'base_hp' INTEGER NOT NULL DEFAULT 15,
|
||||||
'base_mp' INTEGER NOT NULL DEFAULT 10,
|
'base_mp' INTEGER NOT NULL DEFAULT 10,
|
||||||
'base_str' INTEGER NOT NULL DEFAULT 1,
|
'base_str' INTEGER NOT NULL DEFAULT 1,
|
||||||
'base_dex' INTEGER NOT NULL DEFAULT 1,
|
'base_dex' INTEGER NOT NULL DEFAULT 1,
|
||||||
'hp_rate' INTEGER NOT NULL DEFAULT 2,
|
'rate_hp' INTEGER NOT NULL DEFAULT 2,
|
||||||
'mp_rate' INTEGER NOT NULL DEFAULT 2,
|
'rate_mp' INTEGER NOT NULL DEFAULT 2,
|
||||||
'str_rate' INTEGER NOT NULL DEFAULT 2,
|
'rate_str' INTEGER NOT NULL DEFAULT 2,
|
||||||
'dex_rate' INTEGER NOT NULL DEFAULT 2
|
'rate_dex' INTEGER NOT NULL DEFAULT 2
|
||||||
);
|
);
|
||||||
INSERT INTO classes VALUES
|
INSERT INTO classes VALUES
|
||||||
(1, 'Adventurer', '', 3, 15, 10, 4, 4, 2, 2, 2, 2),
|
(1, 'Adventurer', '', 15, 10, 4, 4, 2, 2, 2, 2),
|
||||||
(2, 'Mage', '', 1, 10, 15, 1, 7, 1, 3, 1, 2),
|
(2, 'Mage', '', 10, 15, 1, 7, 1, 3, 1, 2),
|
||||||
(3, 'Warrior', '', 2, 20, 5, 7, 1, 3, 1, 3, 1),
|
(3, 'Warrior', '', 20, 5, 7, 1, 3, 1, 3, 1),
|
||||||
(4, 'Paladin', '', 5, 15, 15, 5, 5, 2, 2, 2, 2);
|
(4, 'Paladin', '', 15, 15, 5, 5, 2, 2, 2, 2);
|
||||||
|
|
||||||
DROP TABLE IF EXISTS monsters;
|
DROP TABLE IF EXISTS monsters;
|
||||||
CREATE TABLE monsters (
|
CREATE TABLE monsters (
|
Loading…
x
Reference in New Issue
Block a user