github.com/ravendb/ravendb-go-client@v0.0.0-20240229102137-4474ee7aa0fa/get_database_names_operation.go (about) 1 package ravendb 2 3 import ( 4 "net/http" 5 "strconv" 6 ) 7 8 type GetDatabaseNamesOperation struct { 9 _start int 10 _pageSize int 11 } 12 13 func NewGetDatabaseNamesOperation(_start int, _pageSize int) *GetDatabaseNamesOperation { 14 return &GetDatabaseNamesOperation{ 15 _start: _start, 16 _pageSize: _pageSize, 17 } 18 } 19 20 func (o *GetDatabaseNamesOperation) GetCommand(conventions *DocumentConventions) *GetDatabaseNamesCommand { 21 return NewGetDatabaseNamesCommand(o._start, o._pageSize) 22 } 23 24 var ( 25 _ RavenCommand = &GetDatabaseNamesCommand{} 26 ) 27 28 type GetDatabaseNamesCommand struct { 29 RavenCommandBase 30 31 _start int 32 _pageSize int 33 34 Result []string 35 } 36 37 func NewGetDatabaseNamesCommand(_start int, _pageSize int) *GetDatabaseNamesCommand { 38 cmd := &GetDatabaseNamesCommand{ 39 RavenCommandBase: NewRavenCommandBase(), 40 41 _start: _start, 42 _pageSize: _pageSize, 43 } 44 cmd.IsReadRequest = true 45 return cmd 46 } 47 48 func (c *GetDatabaseNamesCommand) CreateRequest(node *ServerNode) (*http.Request, error) { 49 url := node.URL + "/databases?start=" + strconv.Itoa(c._start) + "&pageSize=" + strconv.Itoa(c._pageSize) + "&namesOnly=true" 50 51 return newHttpGet(url) 52 } 53 54 // GetDatabaseNamesResult describes response of GetDatabaseNames command 55 type GetDatabaseNamesResult struct { 56 Databases []string `json:"Databases"` 57 } 58 59 func (c *GetDatabaseNamesCommand) SetResponse(response []byte, fromCache bool) error { 60 if len(response) == 0 { 61 return throwInvalidResponse() 62 } 63 64 var res GetDatabaseNamesResult 65 err := jsonUnmarshal(response, &res) 66 if err != nil { 67 return err 68 } 69 70 /* 71 JsonNode names = mapper.readTree(response); 72 if (!names.has("Databases")) { 73 throwInvalidResponse(); 74 } 75 76 JsonNode databases = names.get("Databases"); 77 if (!databases.isArray()) { 78 return throwInvalidResponse(); 79 } 80 ArrayNode dbNames = (ArrayNode) databases; 81 string[] databaseNames = new string[dbNames.size()]; 82 for (int i = 0; i < dbNames.size(); i++) { 83 databaseNames[i] = dbNames.get(i).asText(); 84 } 85 */ 86 87 c.Result = res.Databases 88 return nil 89 }