golang framework 중 하나인 buffalo에서
생성은 액션명만 주면 되는데
계층구조로 만들려면 이름을 계층을 줘서 만든다
1. action
추가는
buffalo g a aaa list
이렇게 하면 aaa는
app.go 에 app.GET("/aaa/list", AppList) 가 추가되고
aaa.go 파일, aaa_test.go 가 생성된다.
templates에 aaa 폴더 아래에 list.plush.html 이 추가된다.
buffalo g a bbb/bcd list
이렇게 하면 bcd 는
app.go 에 app.Get("bbb_bcd/list", BbbBcdList) 가 추가되고
actions/bbb 폴더 아래에 bcd.go, bcd_test.go 가 생성된다
templates/bbb/bcd 아래에 list.plush.html 가 추가된다.
삭제는
buffalo destroy action aaa 를 하면 생성됐던 파일 및 app.go의 설정이 지워진다.
그러나, 계층구조로 만든 경우에는
bbb/bcd 를 bbb_bcd 로 변환하기 때문에 파일을 찾지 못해 삭제가 되지 않는다.
삭제는 수동으로
ps : action 생성시 기본은 GET 인데 Post 로 만들 때에는 --method POST 를 추가하면 된다
ex) buffalo g a aaa list create --method POST 를 하면
app.go에 list는 get으로 create는 post로 설정된다.
2. resource
action은 만들고 싶은것들을 하나하나 설정할 때 사용하고
resource는 list,show,create,update,destroy를 한번에 생성하여 관리할 때 사용한다.
app.go 에서는 app.Resource("이름", xxxResource{}) 로 설정된다.
장점은 구조만 맞으면 작업량이 줄수 있지만 추가 설정을 하려면
조금 복잡하다.
추가는
buffalo generate resource "리소스이름" "생성할 컬럼명"
ex) buffalo generate resource efg title desc 를 하면
efg 그룹에 crud가 생성되고 efg table에 column으로 id, title, desc 가 정의된다.
리소스는 그룹으로 만들 수 없다.
eee/efg 로 만들려고 해도 eee_efg로 변경하여 생성된다.
table의 경우 마지막 언더바(_) 이후에 s를 붙여서 생성한다.
eee/efg -> eee_efg -> efg -> efgs 로 table명이 정해진다.
create table efgs
삭제는
애초에 변환해여 생성하므로 삭제도 가능하다
buffalo destroy resource efg
buffalo destroy resource eee/efg -> 생성할 때 eee/efg로 생성해도 eee_efg로 생성
리소스는 이름에 주의를 하면 된다. 언더바 사용하지 않는것이 좋고
즉 버팔로 가 정의한 구조에 딱맞으면 resource를 쓰고 안맞으면 actions로 일일이 설정
계층구조로 만들면 삭제는 수동으로 해야한다는 것.