diff options
Diffstat (limited to 'OpenSim/Region/Storage')
-rw-r--r-- | OpenSim/Region/Storage/OpenSim.DataStore.MonoSqlite/MonoSqliteDataStore.cs | 52 |
1 files changed, 45 insertions, 7 deletions
diff --git a/OpenSim/Region/Storage/OpenSim.DataStore.MonoSqlite/MonoSqliteDataStore.cs b/OpenSim/Region/Storage/OpenSim.DataStore.MonoSqlite/MonoSqliteDataStore.cs index 60736aa..9d0a043 100644 --- a/OpenSim/Region/Storage/OpenSim.DataStore.MonoSqlite/MonoSqliteDataStore.cs +++ b/OpenSim/Region/Storage/OpenSim.DataStore.MonoSqlite/MonoSqliteDataStore.cs | |||
@@ -114,7 +114,45 @@ namespace OpenSim.DataStore.MonoSqliteStorage | |||
114 | return data; | 114 | return data; |
115 | } | 115 | } |
116 | 116 | ||
117 | private SqliteCommand createPrimInsertCommand(Dictionary<string, DbType> defs) | 117 | private Dictionary<string, DbType> createShapeDataDefs() |
118 | { | ||
119 | Dictionary<string, DbType> data = new Dictionary<string, DbType>(); | ||
120 | data.Add("id", DbType.Int32); | ||
121 | data.Add("prim_id", DbType.Int32); | ||
122 | // shape is an enum | ||
123 | data.Add("Shape", DbType.Int32); | ||
124 | // vectors | ||
125 | data.Add("ScaleX", DbType.Double); | ||
126 | data.Add("ScaleY", DbType.Double); | ||
127 | data.Add("ScaleZ", DbType.Double); | ||
128 | // paths | ||
129 | data.Add("PCode", DbType.Int32); | ||
130 | data.Add("PathBegin", DbType.Int32); | ||
131 | data.Add("PathEnd", DbType.Int32); | ||
132 | data.Add("PathScaleX", DbType.Int32); | ||
133 | data.Add("PathScaleY", DbType.Int32); | ||
134 | data.Add("PathShearX", DbType.Int32); | ||
135 | data.Add("PathShearY", DbType.Int32); | ||
136 | data.Add("PathSkew", DbType.Int32); | ||
137 | data.Add("PathCurve", DbType.Int32); | ||
138 | data.Add("PathRadiusOffset", DbType.Int32); | ||
139 | data.Add("PathRevolutions", DbType.Int32); | ||
140 | data.Add("PathTaperX", DbType.Int32); | ||
141 | data.Add("PathTaperY", DbType.Int32); | ||
142 | data.Add("PathTwist", DbType.Int32); | ||
143 | data.Add("PathTwistBegin", DbType.Int32); | ||
144 | // profile | ||
145 | data.Add("ProfileBegin", DbType.Int32); | ||
146 | data.Add("ProfileEnd", DbType.Int32); | ||
147 | data.Add("ProfileCurve", DbType.Int32); | ||
148 | data.Add("ProfileHollow", DbType.Int32); | ||
149 | // text TODO: this isn't right, but I'm not sure the right | ||
150 | // way to specify this as a blob atm | ||
151 | data.Add("Texture", DbType.Binary); | ||
152 | return data; | ||
153 | } | ||
154 | |||
155 | private SqliteCommand createInsertCommand(string table, Dictionary<string, DbType> defs) | ||
118 | { | 156 | { |
119 | /** | 157 | /** |
120 | * This is subtle enough to deserve some commentary. | 158 | * This is subtle enough to deserve some commentary. |
@@ -128,7 +166,7 @@ namespace OpenSim.DataStore.MonoSqliteStorage | |||
128 | string[] cols = new string[defs.Keys.Count]; | 166 | string[] cols = new string[defs.Keys.Count]; |
129 | defs.Keys.CopyTo(cols, 0); | 167 | defs.Keys.CopyTo(cols, 0); |
130 | 168 | ||
131 | string sql = "insert into prims("; | 169 | string sql = "insert into " + table + "("; |
132 | sql += String.Join(", ", cols); | 170 | sql += String.Join(", ", cols); |
133 | // important, the first ':' needs to be here, the rest get added in the join | 171 | // important, the first ':' needs to be here, the rest get added in the join |
134 | sql += ") values (:"; | 172 | sql += ") values (:"; |
@@ -144,13 +182,13 @@ namespace OpenSim.DataStore.MonoSqliteStorage | |||
144 | return cmd; | 182 | return cmd; |
145 | } | 183 | } |
146 | 184 | ||
147 | private SqliteCommand createPrimUpdateCommand(Dictionary<string, DbType> defs) | 185 | private SqliteCommand createUpdateCommand(string table, string pk, Dictionary<string, DbType> defs) |
148 | { | 186 | { |
149 | string sql = "update prims set "; | 187 | string sql = "update " + table + " set "; |
150 | foreach (string key in defs.Keys) { | 188 | foreach (string key in defs.Keys) { |
151 | sql += key + "= :" + key + ", "; | 189 | sql += key + "= :" + key + ", "; |
152 | } | 190 | } |
153 | sql += " where UUID=:UUID"; | 191 | sql += " where " + pk; |
154 | SqliteCommand cmd = new SqliteCommand(sql); | 192 | SqliteCommand cmd = new SqliteCommand(sql); |
155 | 193 | ||
156 | // this provides the binding for all our parameters, so | 194 | // this provides the binding for all our parameters, so |
@@ -165,10 +203,10 @@ namespace OpenSim.DataStore.MonoSqliteStorage | |||
165 | { | 203 | { |
166 | Dictionary<string, DbType> primDataDefs = createPrimDataDefs(); | 204 | Dictionary<string, DbType> primDataDefs = createPrimDataDefs(); |
167 | 205 | ||
168 | da.InsertCommand = createPrimInsertCommand(primDataDefs); | 206 | da.InsertCommand = createInsertCommand("prims", primDataDefs); |
169 | da.InsertCommand.Connection = conn; | 207 | da.InsertCommand.Connection = conn; |
170 | 208 | ||
171 | da.UpdateCommand = createPrimUpdateCommand(primDataDefs); | 209 | da.UpdateCommand = createUpdateCommand("prims", "UUID=:UUID", primDataDefs); |
172 | da.UpdateCommand.Connection = conn; | 210 | da.UpdateCommand.Connection = conn; |
173 | 211 | ||
174 | SqliteCommand delete = new SqliteCommand("delete from prims where UUID = :UUID"); | 212 | SqliteCommand delete = new SqliteCommand("delete from prims where UUID = :UUID"); |