Class: RailsVueGenerator::Handlers::StoreHandler

Inherits:
BaseHandler
  • Object
show all
Defined in:
lib/rails_vue_generator/handlers/store_handler.rb

Constant Summary

Constants inherited from BaseHandler

BaseHandler::IGNORED_COLUMNS

Instance Method Summary collapse

Methods inherited from BaseHandler

#initialize, #model_name

Constructor Details

This class inherits a constructor from RailsVueGenerator::Handlers::BaseHandler

Instance Method Details

#generateObject



6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
# File 'lib/rails_vue_generator/handlers/store_handler.rb', line 6

def generate
  lines = []
  lines << "import api from '@/api'"
  lines << "import router from '@/router'"
  lines << ''
  lines << 'const state = {'
  lines << '  current: {},'
  lines << '  all: [],'
  lines << '  loading: {'
  lines << '    current: false,'
  lines << '    all: false'
  lines << '  }'
  lines << '}'
  lines << ''
  lines << 'const actions = {'
  lines << '  async getAll({'
  lines << '    commit'
  lines << '  }, code) {'
  lines << "    commit('startLoading', 'all')"
  lines << "    const result = await api.#{model_name}.getAll()"
  lines << '    const responseData = result.data'
  lines << "    commit('store#{model_name.pluralize.titleize}', responseData)"
  lines << "    commit('endLoading', 'all')"
  lines << '    return responseData'
  lines << '  },'
  lines << '  async get({'
  lines << '    commit'
  lines << '  }, id) {'
  lines << "    commit('startLoading', 'current')"
  lines << "    const result = await api.#{model_name}.get(id)"
  lines << '    const responseData = result.data'
  lines << "    commit('store#{model_name.titleize}', responseData)"
  lines << "    commit('endLoading', 'current')"
  lines << '    return responseData'
  lines << '  },'
  lines << '  async create({commit}, data) {'
  lines << "    const result = await api.#{model_name}.create(data)"
  lines << '    const responseData = result.data'
  lines << "    commit('store#{model_name.titleize}', responseData)"
  lines << '    return responseData'
  lines << '  },'
  lines << '  async update({commit}, {id, data}) {'
  lines << "    commit('startLoading', 'current')"
  lines << "    const result = await api.#{model_name}.update(id, data)"
  lines << '    const responseData = result.data'
  lines << "    commit('store#{model_name.titleize}', responseData)"
  lines << "    commit('endLoading', 'current')"
  lines << '    return responseData'
  lines << '  },'
  lines << '  async delete({commit}, id) {'
  lines << "    const result = await api.#{model_name}.delete(id)"
  lines << '    const responseData = result.data'
  lines << "    commit('clearCurrent')"
  lines << '    return responseData'
  lines << '  },'
  lines << '  clearCurrent({commit}) {'
  lines << '    commit("clearCurrent")'
  lines << '  }'
  lines << ''
  lines << '}'
  lines << 'const mutations = {'
  lines << "  store#{model_name.titleize}(state, #{model_name}) {"
  lines << "    state.current = #{model_name}"
  lines << '  },'
  lines << "  store#{model_name.pluralize.titleize}(state, data) {"
  lines << '    state.all = data'
  lines << '  },'
  lines << '  clearCurrent(state) {'
  lines << '    state.current = {}'
  lines << '  },'
  lines << '  startLoading(state, key) {'
  lines << '    state.loading[key] = true'
  lines << '  },'
  lines << '  endLoading(state, key) {'
  lines << '    state.loading[key] = false'
  lines << '  }'
  lines << '}'
  lines << ''
  lines << 'export default {'
  lines << '  namespaced: true,'
  lines << '  state,'
  lines << '  actions,'
  lines << '  mutations'
  lines << '}'
  lines << ''

  lines.join("\n")
end