Skip to content
This repository was archived by the owner on Oct 15, 2020. It is now read-only.

Commit b05ca55

Browse files
author
badim
committed
initial
1 parent cbd7b30 commit b05ca55

File tree

5 files changed

+58
-146
lines changed

5 files changed

+58
-146
lines changed

Sources/BindVar.swift

Lines changed: 34 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -8,71 +8,49 @@ import cocilib
88

99

1010

11-
class BindVar: StringLiteralConvertible, IntegerLiteralConvertible, BooleanLiteralConvertible, FloatLiteralConvertible {
11+
public class BindVar: StringLiteralConvertible, IntegerLiteralConvertible, BooleanLiteralConvertible, FloatLiteralConvertible {
1212
let bind: (COpaquePointer, String) -> Void
13-
private let dealoc: () -> Void
14-
deinit{
15-
dealoc()
13+
var value: Any
14+
public init(_ value: Int) {
15+
var v = Int32(value)
16+
bind = { st, name in OCI_BindInt(st, name, &v) }
17+
self.value = v
18+
19+
}
20+
public init (_ value: String) {
21+
var v = Array(value.nulTerminatedUTF8).map( {Int8(bitPattern: $0) })
22+
bind = {st, name in OCI_BindString(st, name, &v, 0)}
23+
self.value = v
24+
}
25+
public init (_ value: Bool) {
26+
var v = Int32((value) ? 1: 0)
27+
bind = {st, name in OCI_BindBoolean(st, name, &v)}
28+
self.value = v
1629
}
17-
init( fromInt value: Int) {
18-
let v = Int32(value)
19-
let p = UnsafeMutablePointer<Int32>.alloc(1)
20-
p.initialize(v)
21-
bind = { st, name in OCI_BindInt(st, name, p) }
22-
dealoc = {
23-
p.destroy()
24-
p.dealloc(1)
25-
}
26-
}
27-
init (fromString value: String) {
28-
let v = Array(value.nulTerminatedUTF8).map( {Int8(bitPattern: $0) })
29-
let p = UnsafeMutablePointer<Int8>.alloc(v.count)
30-
p.initializeFrom(v)
31-
bind = {st, name in OCI_BindString(st, name, p, 0)}
32-
dealoc = {
33-
p.destroy()
34-
p.dealloc(v.count)
35-
}
36-
}
37-
init (fromBool value: Bool) {
38-
let p = UnsafeMutablePointer<Int32>.alloc(1)
39-
p.initialize(Int32((value) ? 1: 0))
40-
bind = {st, name in OCI_BindBoolean(st, name, p)}
41-
dealoc = {
42-
p.destroy()
43-
p.dealloc(1)
44-
}
45-
}
46-
4730

48-
init (fromDouble value: Double) {
49-
let p = UnsafeMutablePointer<Double>.alloc(1)
50-
p.initialize(value)
51-
bind = {st, name in OCI_BindDouble(st, name, p)}
52-
dealoc = {
53-
p.destroy()
54-
p.dealloc(1)
55-
}
31+
public init (_ value: Double) {
32+
var v = value
33+
bind = {st, name in OCI_BindDouble(st, name, &v)}
34+
self.value = v
5635
}
57-
58-
required convenience init(stringLiteral value: String) {
59-
self.init(fromString: value)
36+
37+
public required convenience init(stringLiteral value: String) {
38+
self.init(value)
6039
}
61-
required convenience init(extendedGraphemeClusterLiteral value: String) {
62-
self.init(fromString: value)
40+
public required convenience init(extendedGraphemeClusterLiteral value: String) {
41+
self.init(value)
6342
}
64-
required convenience init(unicodeScalarLiteral value: String) {
65-
self.init(fromString: value)
43+
public required convenience init(unicodeScalarLiteral value: String) {
44+
self.init( value)
6645
}
67-
required convenience init(integerLiteral value: Int){
68-
self.init(fromInt: value)
46+
public required convenience init(integerLiteral value: Int){
47+
self.init(value)
6948
}
70-
required convenience init(booleanLiteral value: Bool) {
71-
self.init(fromBool: value)
49+
public required convenience init(booleanLiteral value: Bool) {
50+
self.init(value)
7251
}
73-
74-
required convenience init(floatLiteral value: Double) {
75-
self.init(fromDouble: value)
52+
public required convenience init(floatLiteral value: Double) {
53+
self.init(value)
7654
}
7755
}
7856

Sources/Connection.swift

Lines changed: 10 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11

22
import cocilib
3-
4-
@_exported import SQL
3+
import String
4+
//@_exported import SQL
55

66

77
struct DatabaseError: CustomStringConvertible {
@@ -45,10 +45,10 @@ public struct ConnectionInfo {
4545

4646
public struct OracleService {
4747
var raw_str: String?, host:String?, port:String?, service:String?
48-
init(from_string raw_str: String){
48+
public init(from_string raw_str: String){
4949
self.raw_str = raw_str
5050
}
51-
init(host: String, port: String, service: String) {
51+
public init(host: String, port: String, service: String) {
5252
self.host = host; self.port = port; self.service = service
5353
}
5454

@@ -65,43 +65,42 @@ public struct OracleService {
6565
6666
6767
68-
class Connection {
68+
public class Connection {
6969
// associatedtype Error: ErrorType
7070
7171
private var connection: COpaquePointer? = nil
7272
7373
7474
let conn_info: ConnectionInfo
7575
76-
required init(service: OracleService, user:String, pwd: String) {
76+
public required init(service: OracleService, user:String, pwd: String) {
7777
conn_info = ConnectionInfo(service_name: service.string, user: user, pwd: pwd)
7878
OCI_Initialize({error_callback($0)}, nil, UInt32(OCI_ENV_DEFAULT)); //should be once per app
7979
}
8080
81-
8281
func close() {
8382
guard var connection = connection else {
8483
return
8584
}
8685
OCI_ConnectionFree(connection)
8786
connection = nil
8887
}
89-
func open() throws {
88+
public func open() throws {
9089
connection = OCI_ConnectionCreate(conn_info.service_name, conn_info.user, conn_info.pwd, UInt32(OCI_SESSION_DEFAULT));
9190
}
92-
func cursor() throws -> Cursor {
91+
public func cursor() throws -> Cursor {
9392
guard let connection = connection else {
9493
throw DatabaseErrors.NotConnected
9594
}
9695
return Cursor(connection: connection)
9796
}
98-
var connected: Bool {
97+
public var connected: Bool {
9998
guard let connection = connection else {
10099
return false
101100
}
102101
return OCI_IsConnected(connection) == 1
103102
}
104-
var autocommit: Bool {
103+
public var autocommit: Bool {
105104
set(newValue) {
106105
OCI_SetAutoCommit(connection!, (newValue) ? 1 : 0)
107106
}

Sources/Cursor.swift

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@ public class Cursor : SequenceType, GeneratorType {
8484
}
8585
return result
8686
}
87-
var affected: Int {
87+
public var affected: Int {
8888
return Int(OCI_GetAffectedRows(statementPointer))
8989
}
9090

@@ -97,12 +97,12 @@ public class Cursor : SequenceType, GeneratorType {
9797
resultPointer = nil
9898
}
9999

100-
func bind(name: String, bindVar: BindVar) {
100+
public func bind(name: String, bindVar: BindVar) {
101101
bindVar.bind(statementPointer, name)
102102
binded_vars.append(bindVar)
103103
}
104104

105-
func register(name: String, type: DataTypes) {
105+
public func register(name: String, type: DataTypes) {
106106
switch type {
107107
case .int:
108108
OCI_RegisterInt(statementPointer, name)
@@ -111,7 +111,7 @@ public class Cursor : SequenceType, GeneratorType {
111111
}
112112
}
113113

114-
func execute(statement: String, params: [String: BindVar]=[:], register: [String: DataTypes]=[:]) throws {
114+
public func execute(statement: String, params: [String: BindVar]=[:], register: [String: DataTypes]=[:]) throws {
115115
reset()
116116
let prepared = OCI_Prepare(statementPointer, statement)
117117
assert(prepared == 1)

Sources/Row.swift

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
import cocilib
33

44

5-
class Field {
5+
public class Field {
66
private let resultPointer: COpaquePointer
77
private let index: UInt32
88
let type: DataTypes
@@ -11,20 +11,20 @@ class Field {
1111
self.index = UInt32(index+1)
1212
self.type = type
1313
}
14-
var isNull: Bool {
14+
public var isNull: Bool {
1515
return OCI_IsNull(resultPointer, index) == 1
1616
}
17-
var string: String {
17+
public var string: String {
1818
let s = OCI_GetString(resultPointer, index)
1919
return String.fromCString(s)!
2020
}
21-
var int: Int {
21+
public var int: Int {
2222
return Int(OCI_GetInt(resultPointer, index))
2323
}
24-
var double: Double {
24+
public var double: Double {
2525
return OCI_GetDouble(resultPointer, index)
2626
}
27-
var value: Any? {
27+
public var value: Any? {
2828
if self.isNull{
2929
return nil as Any?
3030
}
@@ -54,28 +54,28 @@ public class Row {
5454
self.resultPointer = resultPointer
5555
self.columns = columns
5656
}
57-
subscript (name: String) -> Field? {
57+
public subscript (name: String) -> Field? {
5858
let maybeIndex = columns.indexOf({$0.name==name})
5959
guard let index = maybeIndex else {
6060
return nil
6161
}
6262
return Field(resultPointer: resultPointer, index: index, type: columns[index].type)
6363
}
64-
subscript (index: Int) -> Field? {
64+
public subscript (index: Int) -> Field? {
6565
guard index >= 0 && index < columns.count else {
6666
return nil
6767
}
6868
let c = columns[index]
6969
return Field(resultPointer: resultPointer, index: index, type: c.type)
7070
}
71-
lazy var dict: [String : Any?] = {
71+
public lazy var dict: [String : Any?] = {
7272
var result: [String : Any?] = [:]
7373
for (index, column) in self.columns.enumerate() {
7474
result[column.name] = Field(resultPointer: self.resultPointer, index: index, type: column.type).value
7575
}
7676
return result
7777
}()
78-
lazy var list: [Any?] = {
78+
public lazy var list: [Any?] = {
7979
var result: [Any?] = []
8080
for (index, column) in self.columns.enumerate() {
8181
result.append(Field(resultPointer: self.resultPointer, index: index, type: column.type).value)

Sources/main.swift

Lines changed: 0 additions & 65 deletions
This file was deleted.

0 commit comments

Comments
 (0)