Skip to content

Commit 4b8520c

Browse files
committed
fix: cannot save store records
1 parent 3f2877e commit 4b8520c

File tree

2 files changed

+55
-29
lines changed

2 files changed

+55
-29
lines changed

console/atest-ui/src/views/StoreManager.vue

Lines changed: 42 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -8,20 +8,28 @@ import { useI18n } from 'vue-i18n'
88
99
const { t } = useI18n()
1010
11-
const emptyStore = {
12-
kind: {},
11+
const emptyStore = function() {
12+
return {
13+
name: '',
14+
url: '',
15+
username: '',
16+
password: '',
17+
kind: {
18+
name: '',
19+
url: ''
20+
},
1321
properties: [{
1422
key: '',
1523
value: ''
1624
}]
17-
} as Store
25+
} as Store
26+
}
1827
const stores = ref([] as Store[])
1928
const dialogVisible = ref(false)
2029
const creatingLoading = ref(false)
2130
const storeFormRef = ref<FormInstance>()
22-
const store = ref(emptyStore)
2331
const createAction = ref(true)
24-
const storeForm = reactive(store)
32+
const storeForm = reactive(emptyStore())
2533
2634
interface Store {
2735
name: string
@@ -30,6 +38,7 @@ interface Store {
3038
password: string
3139
ready: boolean
3240
kind: {
41+
name: string
3342
url: string
3443
}
3544
properties: Pair[]
@@ -75,14 +84,23 @@ function editStore(name: string) {
7584
dialogVisible.value = true
7685
stores.value.forEach((e: Store) => {
7786
if (e.name === name) {
78-
store.value = e
87+
setStoreForm(e)
7988
}
8089
})
8190
createAction.value = false
8291
}
8392
93+
function setStoreForm(store: Store) {
94+
storeForm.name = store.name
95+
storeForm.url = store.url
96+
storeForm.username = store.username
97+
storeForm.password = store.password
98+
storeForm.kind = store.kind
99+
storeForm.properties = store.properties
100+
}
101+
84102
function addStore() {
85-
store.value = emptyStore
103+
setStoreForm(emptyStore())
86104
dialogVisible.value = true
87105
createAction.value = true
88106
}
@@ -96,14 +114,9 @@ const submitForm = async (formEl: FormInstance | undefined) => {
96114
if (valid) {
97115
creatingLoading.value = true
98116
99-
// remove empty pair
100-
store.value.properties = store.value.properties.filter(
101-
(e) => e.key !== ''
102-
)
103-
104117
const requestOptions = {
105118
method: 'POST',
106-
body: JSON.stringify(store.value)
119+
body: JSON.stringify(storeForm)
107120
}
108121
109122
let api = '/server.Runner/CreateStore'
@@ -112,22 +125,31 @@ const submitForm = async (formEl: FormInstance | undefined) => {
112125
}
113126
114127
fetch(api, requestOptions)
115-
.then((response) => response.json())
128+
.then((response) => {
129+
if (!response.ok) {
130+
throw new Error(response.statusText)
131+
} else {
132+
response.json()
133+
}
134+
})
116135
.then(() => {
117-
creatingLoading.value = false
118136
loadStores()
119137
dialogVisible.value = false
120138
formEl.resetFields()
121139
})
140+
.catch((e) => {
141+
ElMessage.error('Oops, ' + e)
142+
})
143+
creatingLoading.value = false
122144
}
123145
})
124146
}
125147
126148
function updateKeys() {
127-
const props = store.value.properties
149+
const props = storeForm.properties
128150
let lastItem = props[props.length - 1]
129151
if (lastItem.key !== '') {
130-
store.value.properties.push({
152+
storeForm.properties.push({
131153
key: '',
132154
value: ''
133155
})
@@ -209,6 +231,9 @@ function updateKeys() {
209231
<el-form-item :label="t('field.password')" prop="password">
210232
<el-input v-model="storeForm.password" type="password" test-id="store-form-password" />
211233
</el-form-item>
234+
<el-form-item :label="t('field.plugin')" prop="pluginName">
235+
<el-input v-model="storeForm.kind.name" test-id="store-form-plugin-name" />
236+
</el-form-item>
212237
<el-form-item :label="t('field.plugin')" prop="plugin">
213238
<el-input v-model="storeForm.kind.url" test-id="store-form-plugin" />
214239
</el-form-item>

pkg/testing/store.go

Lines changed: 13 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -149,10 +149,7 @@ func (s *storeFactory) DeleteStore(name string) (err error) {
149149
break
150150
}
151151
}
152-
var data []byte
153-
if data, err = yaml.Marshal(storeConfig); err == nil {
154-
err = os.WriteFile(path.Join(s.configDir, "stores.yaml"), data, 0644)
155-
}
152+
err = s.save(storeConfig)
156153
}
157154
return
158155
}
@@ -171,10 +168,7 @@ func (s *storeFactory) UpdateStore(store Store) (err error) {
171168
}
172169

173170
if exist {
174-
var data []byte
175-
if data, err = yaml.Marshal(storeConfig); err == nil {
176-
err = os.WriteFile(path.Join(s.configDir, "stores.yaml"), data, 0644)
177-
}
171+
err = s.save(storeConfig)
178172
} else {
179173
err = fmt.Errorf("store %s is not exists", store.Name)
180174
}
@@ -196,17 +190,24 @@ func (s *storeFactory) CreateStore(store Store) (err error) {
196190

197191
if !exist {
198192
storeConfig.Stores = append(storeConfig.Stores, store)
199-
var data []byte
200-
if data, err = yaml.Marshal(storeConfig); err == nil {
201-
err = os.WriteFile(path.Join(s.configDir, "stores.yaml"), data, 0644)
202-
}
193+
err = s.save(storeConfig)
203194
} else {
204195
err = fmt.Errorf("store %s already exists", store.Name)
205196
}
206197
}
207198
return
208199
}
209200

201+
func (s *storeFactory) save(storeConfig *StoreConfig) (err error) {
202+
if err = os.MkdirAll(s.configDir, 0755);err==nil{
203+
var data []byte
204+
if data, err = yaml.Marshal(storeConfig); err == nil {
205+
err = os.WriteFile(path.Join(s.configDir, "stores.yaml"), data, 0644)
206+
}
207+
}
208+
return
209+
}
210+
210211
func (s *storeFactory) GetStoreKinds() (kinds []StoreKind, err error) {
211212
var storeConfig *StoreConfig
212213
if storeConfig, err = s.getStoreConfig(); err == nil {

0 commit comments

Comments
 (0)